gpt4 book ai didi

python - VBA 的上下文无关语法

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:59 25 4
gpt4 key购买 nike

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

我正在使用 Python PLY lex 和 yacc 模块。现在我只是想让变量声明和赋值作为概念证明。我的初步语法理解变量声明或赋值。一旦我在其中添加换行符(\n)并添加另一条语句,它就无法理解任何内容。即:在gist的代码中,如果从第92行的字符串中删除“a = 3”,它将正常工作,并在标识符列表中插入一个Identifier。

我在扫描仪中处理换行符,所以我认为我的语法定义有问题,但无法弄清楚。

语法基本上是这样的:

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

最佳答案

@rici 写道:

That's a grammar for a single statement. Why do you expect it to work with multiple statements? Nowhere is there a production which indicate that multiple statements are legal input.

OP 写道:

Indeed that was the issue. Thanks for the pointer

关于python - VBA 的上下文无关语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com