两种字面量各取到什么
把 x = 12abc + "a;b"; 切成 Token,输出每个词的原文用 / 拼起来。
玩具语言的词法规则:关键字 let if else while;标识符以字母或下划线开头;数字是连续的数位;字符串用一对双引号括起来(不含转义);双字符运算符 >= <= == !=;单字符运算符 + - * / = < > ; ( );空白只做分隔。
KEYWORDS = ("let", "if", "else", "while")
TWO = ("==", "!=", ">=", "<=")
ONE = "+-*/=<>;()"
SRC = 'let rate = 12;\nlet msg = "hi there";\ntotal = rate >= 3;'
import re
LINE = 'x = 12abc + "a;b";'
PAT = re.compile(r'[A-Za-z_]\w*|\d+|"[^"]*"|==|!=|>=|<=|[+\-*/=<>;()]')
print("/".join(m.group() for m in PAT.finditer(LINE)))
全部评论