aboutsummaryrefslogtreecommitdiff
path: root/lexer.py
diff options
context:
space:
mode:
Diffstat (limited to 'lexer.py')
-rw-r--r--lexer.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/lexer.py b/lexer.py
index 913a9aa..11e02f1 100644
--- a/lexer.py
+++ b/lexer.py
@@ -125,6 +125,15 @@ def lex(inp, tokens):
return lex(inp[1:], tokens)
# numbers
elif nxt in list(DIGITS) or nxt in ("+", "-", "."):
+ # + and - are symbols, too
+ if nxt in ("+", "-"):
+ after = peek(inp[1:])
+ if after not in DIGITS: # parse a symbol
+ token, remainder = lex_symbol(inp)
+ if peek(remainder) not in (None, CLOSE_PAREN, " "):
+ raise Exception("spaces required between tokens")
+ tokens.append(token)
+ return lex(remainder, tokens)
token, remainder = lex_number(inp)
tokens.append(token)
return lex(remainder, tokens)