lex_state_try.py revision 4479
14479Sbinkertn@umich.edu# lex_state2.py
24479Sbinkertn@umich.edu#
34479Sbinkertn@umich.edu# Declaration of a state for which no rules are defined
44479Sbinkertn@umich.edu
54479Sbinkertn@umich.eduimport sys
64479Sbinkertn@umich.edusys.path.insert(0,"..")
74479Sbinkertn@umich.edu
84479Sbinkertn@umich.eduimport ply.lex as lex
94479Sbinkertn@umich.edu
104479Sbinkertn@umich.edutokens = [
114479Sbinkertn@umich.edu    "PLUS",
124479Sbinkertn@umich.edu    "MINUS",
134479Sbinkertn@umich.edu    "NUMBER",
144479Sbinkertn@umich.edu    ]
154479Sbinkertn@umich.edu
164479Sbinkertn@umich.educomment = 1
174479Sbinkertn@umich.edustates = (('comment', 'exclusive'),)
184479Sbinkertn@umich.edu
194479Sbinkertn@umich.edut_PLUS = r'\+'
204479Sbinkertn@umich.edut_MINUS = r'-'
214479Sbinkertn@umich.edut_NUMBER = r'\d+'
224479Sbinkertn@umich.edu
234479Sbinkertn@umich.edut_ignore = " \t"
244479Sbinkertn@umich.edu
254479Sbinkertn@umich.edu# Comments
264479Sbinkertn@umich.edudef t_comment(t):
274479Sbinkertn@umich.edu    r'/\*'
284479Sbinkertn@umich.edu    t.lexer.begin('comment')
294479Sbinkertn@umich.edu    print "Entering comment state"
304479Sbinkertn@umich.edu
314479Sbinkertn@umich.edudef t_comment_body_part(t):
324479Sbinkertn@umich.edu    r'(.|\n)*\*/'
334479Sbinkertn@umich.edu    print "comment body", t
344479Sbinkertn@umich.edu    t.lexer.begin('INITIAL')
354479Sbinkertn@umich.edu
364479Sbinkertn@umich.edudef t_error(t):
374479Sbinkertn@umich.edu    pass
384479Sbinkertn@umich.edu
394479Sbinkertn@umich.edut_comment_error = t_error
404479Sbinkertn@umich.edut_comment_ignore = t_ignore
414479Sbinkertn@umich.edu
424479Sbinkertn@umich.eduimport sys
434479Sbinkertn@umich.edu
444479Sbinkertn@umich.edulex.lex()
454479Sbinkertn@umich.edu
464479Sbinkertn@umich.edudata = "3 + 4 /* This is a comment */ + 10"
474479Sbinkertn@umich.edu
484479Sbinkertn@umich.edulex.runmain(data=data)
49