在Python中使用PLY的两个单词令牌

时间:2011-10-25 09:47:00

标签: python compiler-construction lexer ply

我正在编写一个编译器作为实验练习的一部分,并选择使用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'类型的标记?

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

谢谢,

皮特

1 个答案:

答案 0 :(得分:3)

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

e.g。实施'was' : 'DECLARATOR_WAS'令牌和'a' : 'DECLARATOR_A'令牌。