Python VBA的上下文无关语法

Python VBA的上下文无关语法,python,context-free-grammar,ply,Python,Context Free Grammar,Ply,我正在尝试扫描和解析学校作业的VBA(visual basic for application)代码 我正在使用Python PLY lex和yacc模块。现在我只是想让变量声明和赋值作为概念证明。 我的初级语法理解变量声明或赋值。当我在其中放入换行符(\n)并添加另一条语句时,它什么都不懂。 ie:在要点中的代码中,如果从第92行的字符串中删除“a=3”,它将正常工作,并在标识符列表中插入标识符 我在扫描器中处理换行符,所以我认为我的语法定义有问题,但无法找出它 语法基本上是这样的: stat

我正在尝试扫描和解析学校作业的VBA(visual basic for application)代码

我正在使用Python PLY lex和yacc模块。现在我只是想让变量声明和赋值作为概念证明。 我的初级语法理解变量声明或赋值。当我在其中放入换行符(\n)并添加另一条语句时,它什么都不懂。 ie:在要点中的代码中,如果从第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模块中定义的标记

我已经创建了一个位于:

@rici写道:


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

OP写道:


事实上,这就是问题所在。谢谢你的指点


这是一个单一语句的语法。为什么您希望它可以处理多个语句?没有一个作品表明多个陈述是合法的输入。事实上,这就是问题所在。谢谢你的指点