繁体   English   中英

VBA的无上下文语法

[英]Context-free grammar for VBA

我正在尝试扫描和解析学校作业的VBA(应用程序的Visual Basic)代码。

我正在使用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模块中定义的标记。

用以下代码创建了要点https : //gist.github.com/clsk/22c386695dd1ddb7ca75

@rici写道:

这是单个语句的语法。 为什么期望它与多个语句一起使用? 没有地方可以表明多个陈述是合法的输入。

OP写道:

确实,这就是问题所在。 谢谢你的指导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM