From: Simon Forman Date: Tue, 6 Apr 2021 18:34:46 +0000 (-0700) Subject: Parse Boolean literals. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=14c16d469f4b423849f576c35c0a5607a0a2b823;p=joypy%2FThun.git Parse Boolean literals. --- diff --git a/joy/parser.py b/joy/parser.py index de8a873..ccd68dc 100644 --- a/joy/parser.py +++ b/joy/parser.py @@ -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), ])