2

我正在编写一个编译器作为实验室练习的一部分,并选择使用 PLY 在 Python 中进行。我花了一些时间试图解决这个特殊的问题,但我的实验室助手也走到了死胡同。

在我必须编写的语言中,声明符用两个单词“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在没有 PLY 词法分析器拆分的情况下将其解析为“声明”类型的标记?

如果其中任何一个不清楚,请告诉我,我会尽力回答任何问题

谢谢,

皮特

4

1 回答 1

3

您永远不必在令牌中使用两个词。而是将它们分成两个单独的标记,并确保您的语言强制执行一个始终跟随另一个。

例如实现一个'was' : 'DECLARATOR_WAS'令牌和一个'a' : 'DECLARATOR_A'令牌。

于 2011-10-25T11:32:48.620 回答