From 0a669bf5fa11a63516ea8f5316b0079c2eee4bde Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sat, 28 Oct 2023 20:35:29 -0700 Subject: Update README Add true/false --- chapter05/src/main/java/com/seaofnodes/simple/Parser.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'chapter05/src/main/java/com/seaofnodes') 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: * *
-     *     primaryExpr : integerLiteral | Identifier | '(' expression ')'
+     *     primaryExpr : integerLiteral | Identifier | true | false | '(' expression ')'
      * 
*/ 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; } /** -- cgit v1.2.3