在Python中使用PLY进行双词标记
我正在写一个编译器,作为实验的一部分,我选择用Python和PLY来实现。我花了一些时间试图解决这个特定的问题,但我遇到了瓶颈,我的实验室助手们也帮不上忙。
在我需要编写的语言中,声明器是用两个词“was a”来表示的。例如:
x was a number and x became 5.
这相当于
int x; x = 5;
在使用PLY进行解析时,我把“was a”设置为一个保留字。
reserved = {
...
'was a' : 'DECLARATOR',
...
}
但是,当我用PLY的词法分析器进行解析时,它把“was”和“a”当作两个独立的标记来处理。
我该如何将was a
解析为类型为'DECLARATOR'的一个标记,而不让PLY的词法分析器把它拆分开呢?
如果有任何不清楚的地方,请告诉我,我会尽量回答你的问题。
谢谢,
Pete
1 个回答
3
你不应该在一个标记里使用两个词。应该把它们分开成两个独立的标记,并确保你的语言规则能保证一个标记总是跟着另一个标记。
比如,可以实现一个 'was' : 'DECLARATOR_WAS'
的标记和一个 'a' : 'DECLARATOR_A'
的标记。