16498Snate@binkert.org# lex_state_try.py 24479Sbinkertn@umich.edu# 34479Sbinkertn@umich.edu# Declaration of a state for which no rules are defined 44479Sbinkertn@umich.edu 54479Sbinkertn@umich.eduimport sys 66498Snate@binkert.orgif ".." not in sys.path: sys.path.insert(0,"..") 74479Sbinkertn@umich.edu 84479Sbinkertn@umich.eduimport ply.lex as lex 94479Sbinkertn@umich.edu 106498Snate@binkert.orgtokens = [ 114479Sbinkertn@umich.edu "PLUS", 124479Sbinkertn@umich.edu "MINUS", 134479Sbinkertn@umich.edu "NUMBER", 144479Sbinkertn@umich.edu ] 154479Sbinkertn@umich.edu 164479Sbinkertn@umich.edustates = (('comment', 'exclusive'),) 174479Sbinkertn@umich.edu 184479Sbinkertn@umich.edut_PLUS = r'\+' 194479Sbinkertn@umich.edut_MINUS = r'-' 204479Sbinkertn@umich.edut_NUMBER = r'\d+' 214479Sbinkertn@umich.edu 224479Sbinkertn@umich.edut_ignore = " \t" 234479Sbinkertn@umich.edu 244479Sbinkertn@umich.edu# Comments 254479Sbinkertn@umich.edudef t_comment(t): 264479Sbinkertn@umich.edu r'/\*' 274479Sbinkertn@umich.edu t.lexer.begin('comment') 286498Snate@binkert.org print("Entering comment state") 294479Sbinkertn@umich.edu 304479Sbinkertn@umich.edudef t_comment_body_part(t): 314479Sbinkertn@umich.edu r'(.|\n)*\*/' 326498Snate@binkert.org print("comment body %s" % t) 334479Sbinkertn@umich.edu t.lexer.begin('INITIAL') 344479Sbinkertn@umich.edu 354479Sbinkertn@umich.edudef t_error(t): 364479Sbinkertn@umich.edu pass 374479Sbinkertn@umich.edu 384479Sbinkertn@umich.edut_comment_error = t_error 394479Sbinkertn@umich.edut_comment_ignore = t_ignore 404479Sbinkertn@umich.edu 414479Sbinkertn@umich.edulex.lex() 424479Sbinkertn@umich.edu 434479Sbinkertn@umich.edudata = "3 + 4 /* This is a comment */ + 10" 444479Sbinkertn@umich.edu 454479Sbinkertn@umich.edulex.runmain(data=data) 46