commit 2b4de69ff8b12d46f45ffd5429998e5c1dde6dd7 Author: Josh Holtrop Date: Mon Aug 29 10:01:23 2011 -0400 add lexer skeleton diff --git a/parser/__init__.py b/parser/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/parser/lexer.py b/parser/lexer.py new file mode 100644 index 0000000..a986dcb --- /dev/null +++ b/parser/lexer.py @@ -0,0 +1,38 @@ + +import ply.lex as lex + +reserved = { + 'C': 'C', + } + +tokens = [ + 'LPAREN', + 'RPAREN', + 'SEMICOLON', + 'STRING', + 'ID', + ] + list(reserved.values()) + +t_LPAREN = r'\(' +t_RPAREN = r'\)' +t_SEMICOLON = r';' +t_STRING = r'"([^"])*"' + +t_ignore = ' \t\r' + +def t_ID(t): + r'[a-zA-Z_][a-zA-Z_0-9]*' + t.type = reserved.get(t.value, 'ID') + return t + +def t_newline(t): + r'\n+' + t.lexer.lineno += len(t.value) + return None + +def t_error(t): + print 'Illegal character "%s"' % t.value[0] + t.lexer.skip(1) + +def get_lexer(): + return lex.lex()