【发布时间】:2015-04-12 12:47:02
【问题描述】:
我正在学习词法分析器 Westley Weimer 的编程语言课程。
笔记在这里 https://www.udacity.com/wiki/cs262/unit-2#quiz-rule-order
{视频,如果您愿意观看,请持续 40 秒。} https://www.udacity.com/course/viewer#!/c-cs262/l-48713810/e-48652568/m-48676965
测验: 当两个标记定义可以匹配同一个字符串时,我们的词法分析器的行为可能是模棱两可的.....
假设我们有输入字符串
你好,“世界”,
我们希望输入字符串产生 字串 .哪条规则必须放在最后? IE。 “......我想让你做的是告诉我这些功能中的哪一个,这些规则中的哪一个必须最后出现,记住首先出现的那个会按顺序赢得所有平局对于你好,“世界”分解成一个单词,后跟一个字符串。”
def t_WORD(token):
r'[^ <>]+'
def t_STRING(token)
r'"[^"]*"'
........答案是:
t_STRING , 然后 t_WORD
..........看了很多遍都看不懂,为什么STRING优先于WORD?
请指教。
非常感谢。
【问题讨论】: