summaryrefslogtreecommitdiff
path: root/chapter05/src/main
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2023-10-28 20:35:29 -0700
committerDibyendu Majumdar <dibyendumajumdar@users.noreply.github.com>2023-11-01 18:56:50 +0000
commit0a669bf5fa11a63516ea8f5316b0079c2eee4bde (patch)
tree9ce49fae3cf37489413e1b5ec42a2747d60442ef /chapter05/src/main
parent2c7e86d4350ed115922e80e6bfc1aef30a881f75 (diff)
downloadSimple-0a669bf5fa11a63516ea8f5316b0079c2eee4bde.tar.gz
Simple-0a669bf5fa11a63516ea8f5316b0079c2eee4bde.zip
Update README
Add true/false
Diffstat (limited to 'chapter05/src/main')
-rw-r--r--chapter05/src/main/java/com/seaofnodes/simple/Parser.java10
1 files changed, 6 insertions, 4 deletions
diff --git a/chapter05/src/main/java/com/seaofnodes/simple/Parser.java b/chapter05/src/main/java/com/seaofnodes/simple/Parser.java
index 3e832610..a23f8d70 100644
--- a/chapter05/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter05/src/main/java/com/seaofnodes/simple/Parser.java
@@ -280,17 +280,19 @@ public class Parser {
* Parse a primary expression:
*
* <pre>
- * primaryExpr : integerLiteral | Identifier | '(' expression ')'
+ * primaryExpr : integerLiteral | Identifier | true | false | '(' expression ')'
* </pre>
*/
private Node parsePrimary() {
- if (_lexer.isNumber()) return parseIntegerLiteral();
- if (match("(")) return require(parseExpression(), ")");
+ if( _lexer.isNumber() ) return parseIntegerLiteral();
+ if( match("(") ) return require(parseExpression(), ")");
+ if( match("true" ) ) return new ConstantNode(TypeInteger.constant(1)).peephole();
+ if( match("false") ) return new ConstantNode(TypeInteger.constant(0)).peephole();
String name = requireId();
Node id = _scope.lookup(name);
if( id==null )
throw error("Undefined name '" + name + "'");
- return id.peephole();
+ return id;
}
/**