lex_state_try.py revision 4479:61d3ed46e373
112726Snikos.nikoleris@arm.com# lex_state2.py
212726Snikos.nikoleris@arm.com#
312726Snikos.nikoleris@arm.com# Declaration of a state for which no rules are defined
412726Snikos.nikoleris@arm.com
512726Snikos.nikoleris@arm.comimport sys
612726Snikos.nikoleris@arm.comsys.path.insert(0,"..")
712726Snikos.nikoleris@arm.com
812726Snikos.nikoleris@arm.comimport ply.lex as lex
912726Snikos.nikoleris@arm.com
1012726Snikos.nikoleris@arm.comtokens = [
1112726Snikos.nikoleris@arm.com    "PLUS",
1212726Snikos.nikoleris@arm.com    "MINUS",
1312726Snikos.nikoleris@arm.com    "NUMBER",
1412726Snikos.nikoleris@arm.com    ]
1512726Snikos.nikoleris@arm.com
1612726Snikos.nikoleris@arm.comcomment = 1
1712726Snikos.nikoleris@arm.comstates = (('comment', 'exclusive'),)
1812726Snikos.nikoleris@arm.com
1912726Snikos.nikoleris@arm.comt_PLUS = r'\+'
2012726Snikos.nikoleris@arm.comt_MINUS = r'-'
2112726Snikos.nikoleris@arm.comt_NUMBER = r'\d+'
2212726Snikos.nikoleris@arm.com
2312726Snikos.nikoleris@arm.comt_ignore = " \t"
2412726Snikos.nikoleris@arm.com
2512726Snikos.nikoleris@arm.com# Comments
2612726Snikos.nikoleris@arm.comdef t_comment(t):
2712726Snikos.nikoleris@arm.com    r'/\*'
2812726Snikos.nikoleris@arm.com    t.lexer.begin('comment')
2912726Snikos.nikoleris@arm.com    print "Entering comment state"
3012726Snikos.nikoleris@arm.com
3112726Snikos.nikoleris@arm.comdef t_comment_body_part(t):
3212726Snikos.nikoleris@arm.com    r'(.|\n)*\*/'
3312726Snikos.nikoleris@arm.com    print "comment body", t
3412726Snikos.nikoleris@arm.com    t.lexer.begin('INITIAL')
3512726Snikos.nikoleris@arm.com
3612726Snikos.nikoleris@arm.comdef t_error(t):
3712726Snikos.nikoleris@arm.com    pass
3812726Snikos.nikoleris@arm.com
3912726Snikos.nikoleris@arm.comt_comment_error = t_error
4012726Snikos.nikoleris@arm.comt_comment_ignore = t_ignore
4112726Snikos.nikoleris@arm.com
4212726Snikos.nikoleris@arm.comimport sys
4312726Snikos.nikoleris@arm.com
4412726Snikos.nikoleris@arm.comlex.lex()
4512726Snikos.nikoleris@arm.com
4612726Snikos.nikoleris@arm.comdata = "3 + 4 /* This is a comment */ + 10"
4712726Snikos.nikoleris@arm.com
4812726Snikos.nikoleris@arm.comlex.runmain(data=data)
4912726Snikos.nikoleris@arm.com