在Python中使用PLY进行双词标记

2 投票
1 回答
790 浏览
提问于 2025-04-17 04:57

我正在写一个编译器,作为实验的一部分,我选择用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' 的标记。

撰写回答