我正在尝试扫描并解析学校作业的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
答案 0 :(得分:1)
@rici写道:
OP写道:这是单一陈述的语法。为什么你希望它能用于多个语句?没有任何一个产品表明多个陈述是合法的输入。
确实是这个问题。谢谢你的指针