OSDN Git Service

Parse Boolean literals.
authorSimon Forman <sforman@hushmail.com>
Tue, 6 Apr 2021 18:34:46 +0000 (11:34 -0700)
committerSimon Forman <sforman@hushmail.com>
Tue, 6 Apr 2021 18:34:46 +0000 (11:34 -0700)
joy/parser.py

index de8a873..ccd68dc 100644 (file)
@@ -41,6 +41,7 @@ from .utils.stack import list_to_stack
 
 
 #TODO: explain the details of float lits and strings.
+BOOL = 'true|false'
 FLOAT = r'-?\d+\.\d*(e(-|\+)\d+)?'
 INT = r'-?\d+'
 SYMBOL = r'[•\w!@$%^&*()_+<>?|\/;:`~,.=-]+'
@@ -114,11 +115,12 @@ def _parse(tokens):
 
 
 _scanner = Scanner([
-       (FLOAT, lambda _, token: float(token)),
-       (INT, lambda _, token: int(token)),
-       (SYMBOL, lambda _, token: Symbol(token)),
-       (BRACKETS, lambda _, token: token),
+       (                BOOL, lambda _, token: token == 'true'),
+       (               FLOAT, lambda _, token: float(token)),
+       (                 INT, lambda _, token: int(token)),
+       (              SYMBOL, lambda _, token: Symbol(token)),
+       (            BRACKETS, lambda _, token: token),
        (STRING_DOUBLE_QUOTED, lambda _, token: token[1:-1].replace('\\"', '"')),
        (STRING_SINGLE_QUOTED, lambda _, token: token[1:-1].replace("\\'", "'")),
-       (BLANKS, None),
+       (              BLANKS, None),
        ])