簡體   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