diff options
Diffstat (limited to 'lexer.py')
| -rw-r--r-- | lexer.py | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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) |
