aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2015-03-17 20:22:16 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-03-18 13:45:47 +0000
commit0942ee952efbc35d5def38216fe70d54a2dcd558 (patch)
tree3220efb78990ed1cdef5138bf73f0956672daaca /src/main/java/com
parent4b3bf405257ae3145d5639cd6c3e7fad0e384f94 (diff)
Parser: Add the 'pass' keyword
-- MOS_MIGRATED_REVID=88857682
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Lexer.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Parser.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/TokenKind.java1
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("+="),