我正在尝试为学校作业扫描和解析 VBA(应用程序的 Visual Basic)代码。
我正在使用 Python PLY lex 和 yacc 模块。现在我只是想让变量声明和赋值作为概念证明。我的初步语法理解变量声明或赋值。只要我在其中放置一个换行符 (\n) 并添加另一个语句,它就什么都不懂。即:在 gist 中的代码中,如果您从第 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 模块中定义的标记。
我用以下代码创建了一个要点:https ://gist.github.com/clsk/22c386695dd1ddb7ca75