VBA的无上下文语法

时间:2014-02-13 04:18:53

标签: python context-free-grammar ply

我正在尝试扫描并解析学校作业的VBA(应用程序的基本视觉)代码。

我正在使用Python PLY lex和yacc模块。现在我只是想让变量声明和赋值作为概念证明。 我的初步语法理解变量声明或赋值。一旦我在其中放入换行符(\ n)并添加另一个语句,它就什么都不懂。 即:在要点中的代码中,如果从第92行的字符串中删除“a = 3”,它将正常工作,并在标识符列表中插入一个标识符。

我在扫描仪中处理换行符,所以我认为我的语法定义有问题,但无法解决。

语法基本上是这样的:

statement : declaration
          | assignment

declaration : DIM IDENTIFIER AS TYPE

assignment : IDENTIFIER ASSIGN BOOLEAN
           | IDENTIFIER ASSIGN DOUBLE
           | IDENTIFIER ASSIGN INT

请注意,IDENTIFIER,ASSIGN,BOOLEAN,DOUBLE,INT DIM,AS和TYPE都是lex模块中定义的标记。

我创建了gist with the code,位于:https://gist.github.com/clsk/22c386695dd1ddb7ca75

1 个答案:

答案 0 :(得分:1)

@rici写道:

  

这是单一陈述的语法。为什么你希望它能用于多个语句?没有任何一个产品表明多个陈述是合法的输入。

OP写道:

  

确实是这个问题。谢谢你的指针