1

我正在尝试为学校作业扫描和解析 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

4

1 回答 1

1

@rici 写道:

这是单个语句的语法。为什么您希望它可以与多个语句一起使用?没有一个产品表明多个语句是合法输入。

OP写道:

确实这就是问题所在。谢谢指点

于 2015-05-22T19:28:47.267 回答