我正在编写一个编译器作为实验练习的一部分,并选择使用PLY在Python中完成。我花了一些时间试图解决这个问题,并且像我的实验室助手一样走到了死胡同。
在我必须编写的语言中,声明符用两个词“was a”指定。例如:
x was a number and x became 5.
等于
int x; x = 5;
使用PLY解析时,我将'was a'作为保留字
reserved = {
...
'was a' : 'DECLARATOR',
...
}
但是当我用PLY lexer解析时,它将'was'和'a'视为单独的标记
如果没有PLY lexer拆分它,我如何解析was a
作为'DECLARATOR'类型的标记?
如果其中任何一个不清楚,请告诉我,我会尽力回答任何问题
谢谢,
皮特
答案 0 :(得分:3)
您永远不必在令牌中使用两个单词。而是将它们分成两个单独的标记,并确保您的语言强制执行一个始终跟随另一个标记。
e.g。实施'was' : 'DECLARATOR_WAS'
令牌和'a' : 'DECLARATOR_A'
令牌。