1# ----------------------------------------------------------------------------- 2# calclex.py 3# ----------------------------------------------------------------------------- 4import sys 5
| 1# ----------------------------------------------------------------------------- 2# calclex.py 3# ----------------------------------------------------------------------------- 4import sys 5
|
6sys.path.append("..")
| 6if ".." not in sys.path: sys.path.insert(0,"..")
|
7import ply.lex as lex 8 9tokens = ( 10 'NAME','NUMBER', 11 'PLUS','MINUS','TIMES','DIVIDE','EQUALS', 12 'LPAREN','RPAREN', 13 ) 14 15# Tokens 16 17t_PLUS = r'\+' 18t_MINUS = r'-' 19t_TIMES = r'\*' 20t_DIVIDE = r'/' 21t_EQUALS = r'=' 22t_LPAREN = r'\(' 23t_RPAREN = r'\)' 24t_NAME = r'[a-zA-Z_][a-zA-Z0-9_]*' 25 26def t_NUMBER(t): 27 r'\d+' 28 try: 29 t.value = int(t.value) 30 except ValueError:
| 7import ply.lex as lex 8 9tokens = ( 10 'NAME','NUMBER', 11 'PLUS','MINUS','TIMES','DIVIDE','EQUALS', 12 'LPAREN','RPAREN', 13 ) 14 15# Tokens 16 17t_PLUS = r'\+' 18t_MINUS = r'-' 19t_TIMES = r'\*' 20t_DIVIDE = r'/' 21t_EQUALS = r'=' 22t_LPAREN = r'\(' 23t_RPAREN = r'\)' 24t_NAME = r'[a-zA-Z_][a-zA-Z0-9_]*' 25 26def t_NUMBER(t): 27 r'\d+' 28 try: 29 t.value = int(t.value) 30 except ValueError:
|
31 print "Integer value too large", t.value
| 31 print("Integer value too large %s" % t.value)
|
32 t.value = 0 33 return t 34 35t_ignore = " \t" 36 37def t_newline(t): 38 r'\n+' 39 t.lineno += t.value.count("\n")
| 32 t.value = 0 33 return t 34 35t_ignore = " \t" 36 37def t_newline(t): 38 r'\n+' 39 t.lineno += t.value.count("\n")
|
40
| 40
|
41def t_error(t):
| 41def t_error(t):
|
42 print "Illegal character '%s'" % t.value[0]
| 42 print("Illegal character '%s'" % t.value[0])
|
43 t.lexer.skip(1)
| 43 t.lexer.skip(1)
|
44
| 44
|
45# Build the lexer 46lex.lex() 47 48 49
| 45# Build the lexer 46lex.lex() 47 48 49
|