basiclex.py
来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· Python 代码 · 共 75 行
PY
75 行
# An implementation of Dartmouth BASIC (1964)from ply import *keywords = ( 'LET','READ','DATA','PRINT','GOTO','IF','THEN','FOR','NEXT','TO','STEP', 'END','STOP','DEF','GOSUB','DIM','REM','RETURN','RUN','LIST','NEW',)tokens = keywords + ( 'EQUALS','PLUS','MINUS','TIMES','DIVIDE','POWER', 'LPAREN','RPAREN','LT','LE','GT','GE','NE', 'COMMA','SEMI', 'INTEGER','FLOAT', 'STRING', 'ID','NEWLINE')t_ignore = ' \t'def t_REM(t): r'REM .*' return tdef t_ID(t): r'[A-Z][A-Z0-9]*' if t.value in keywords: t.type = t.value return tt_EQUALS = r'='t_PLUS = r'\+'t_MINUS = r'-'t_TIMES = r'\*'t_POWER = r'\^'t_DIVIDE = r'/'t_LPAREN = r'\('t_RPAREN = r'\)'t_LT = r'<'t_LE = r'<='t_GT = r'>'t_GE = r'>='t_NE = r'<>'t_COMMA = r'\,'t_SEMI = r';'t_INTEGER = r'\d+'t_FLOAT = r'((\d*\.\d+)(E[\+-]?\d+)?|([1-9]\d*E[\+-]?\d+))'t_STRING = r'\".*?\"'def t_NEWLINE(t): r'\n' t.lexer.lineno += 1 return tdef t_error(t): print "Illegal character", t.value[0] t.lexer.skip(1)lex.lex()
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?