| # lex_state_try.py |
| # |
| # Declaration of a state for which no rules are defined |
| |
| import sys |
| if ".." not in sys.path: sys.path.insert(0,"..") |
| |
| import ply.lex as lex |
| |
| tokens = [ |
| "PLUS", |
| "MINUS", |
| "NUMBER", |
| ] |
| |
| states = (('comment', 'exclusive'),) |
| |
| t_PLUS = r'\+' |
| t_MINUS = r'-' |
| t_NUMBER = r'\d+' |
| |
| t_ignore = " \t" |
| |
| # Comments |
| def t_comment(t): |
| r'/\*' |
| t.lexer.begin('comment') |
| print("Entering comment state") |
| |
| def t_comment_body_part(t): |
| r'(.|\n)*\*/' |
| print("comment body %s" % t) |
| t.lexer.begin('INITIAL') |
| |
| def t_error(t): |
| pass |
| |
| t_comment_error = t_error |
| t_comment_ignore = t_ignore |
| |
| lex.lex() |
| |
| data = "3 + 4 /* This is a comment */ + 10" |
| |
| lex.runmain(data=data) |