diff options
author | 2015-03-17 20:22:16 +0000 | |
---|---|---|
committer | 2015-03-18 13:45:47 +0000 | |
commit | 0942ee952efbc35d5def38216fe70d54a2dcd558 (patch) | |
tree | 3220efb78990ed1cdef5138bf73f0956672daaca /src/main/java/com | |
parent | 4b3bf405257ae3145d5639cd6c3e7fad0e384f94 (diff) |
Parser: Add the 'pass' keyword
--
MOS_MIGRATED_REVID=88857682
Diffstat (limited to 'src/main/java/com')
3 files changed, 15 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java index b49fb1ec52..7531b84ae3 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Lexer.java @@ -456,6 +456,7 @@ public final class Lexer { keywordMap.put("in", TokenKind.IN); keywordMap.put("not", TokenKind.NOT); keywordMap.put("or", TokenKind.OR); + keywordMap.put("pass", TokenKind.PASS); keywordMap.put("return", TokenKind.RETURN); keywordMap.put("try", TokenKind.TRY); } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java index 6a856f65e8..9805e45a9f 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java @@ -1016,16 +1016,27 @@ class Parser { parseStatement(list, true); } + // small_stmt | 'pass' + private void parseSmallStatementOrPass(List<Statement> list) { + if (token.kind == TokenKind.PASS) { + // Skip the token, don't add it to the list. + // It has no existence in the AST. + expect(TokenKind.PASS); + } else { + list.add(parseSmallStatement()); + } + } + // simple_stmt ::= small_stmt (';' small_stmt)* ';'? NEWLINE private void parseSimpleStatement(List<Statement> list) { - list.add(parseSmallStatement()); + parseSmallStatementOrPass(list); while (token.kind == TokenKind.SEMI) { nextToken(); if (token.kind == TokenKind.NEWLINE) { break; } - list.add(parseSmallStatement()); + parseSmallStatementOrPass(list); } expect(TokenKind.NEWLINE); // This is a safe place to recover: There is a new line at top-level diff --git a/src/main/java/com/google/devtools/build/lib/syntax/TokenKind.java b/src/main/java/com/google/devtools/build/lib/syntax/TokenKind.java index 889fa6690f..e7e92b4260 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/TokenKind.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/TokenKind.java @@ -56,6 +56,7 @@ public enum TokenKind { NOT_EQUALS("!="), OR("or"), OUTDENT("outdent"), + PASS("pass"), PERCENT("%"), PLUS("+"), PLUS_EQUALS("+="), |