diff --git a/lexer.py b/lexer.py index 52abb85..c695abe 100644 --- a/lexer.py +++ b/lexer.py @@ -26,28 +26,53 @@ reserved = { 'Goto': 'GOTO', } -literals = '+-*/%(){}[]=,' # List of token names tokens = [ + 'PLUS', + 'MINUS', + 'TIMES', + 'DIVIDE', + 'MODULO', + 'LPAREN', + 'RPAREN', + 'LCURBRA', + 'RCURBRA', + 'LSQRBRA', + 'RSQRBRA', + 'ASSIGN', + 'COMMA', 'STRING', 'NUMBER', 'ISEQUAL', 'PLUSASSIGN', 'MINUSASSIGN', 'TIMESASSIGN', - 'DIVASSIGN', - 'MODASSIGN', + 'DIVIDEASSIGN', + 'MODULOASSIGN', 'NEWLINE', 'ID', ] + list(reserved.values()) # common regex +t_PLUS = r'\+' +t_MINUS = r'\-' +t_TIMES = r'\*' +t_DIVIDE = r'\/' +t_MODULO = r'\%' +t_LPAREN = r'\(' +t_RPAREN = r'\)' +t_LCURBRA = r'\{' +t_RCURBRA = r'\}' +t_LSQRBRA = r'\[' +t_RSQRBRA = r'\]' +t_ASSIGN = r'\=' +t_COMMA = r'\,' t_ISEQUAL = r'==' t_PLUSASSIGN = r'\+=' t_MINUSASSIGN = r'\-=' t_TIMESASSIGN = r'\*=' -t_DIVASSIGN = r'/=' -t_MODASSIGN = r'\%=' +t_DIVIDEASSIGN = r'/=' +t_MODULOASSIGN = r'\%=' # Comments t_ignore_COMMENT = r'//.*'