当前位置:  开发笔记 > 后端 > 正文

未缩进的代码打破了我的语法

如何解决《未缩进的代码打破了我的语法》经验,为你挑选了0个好方法。

我有一个.g4语法用于vba/vb6一个词法分析器/解析器,其中词法分析器正在跳过行连续标记 - 不跳过它们会破坏解析器而不是一个选项.这是有问题的词法分析器规则:

LINE_CONTINUATION : ' ' '_' '\r'? '\n' -> skip;

这导致的问题是,只要从第1列开始继续行,解析器就会爆炸:

Sub Test()
Debug.Print "Some text " & _
vbNewLine & "Some more text"    
End Sub

我想"嘿,我知道!我只是预处理字符串我正在喂ANTLR在下划线之前插入一个额外的空格,并改变语法接受它!"

所以我改变了这样的规则:

LINE_CONTINUATION : WS? WS '_' NEWLINE -> skip;
NEWLINE : WS? ('\r'? '\n') WS?; 
WS : [ \t]+;

... 上面的测试vba代码给了我这个解析器错误:

无关的输入'vbNewLine'期待WS

目前我唯一的解决方案是告诉我的用户正确缩进他们的代码.有什么方法可以解决这个语法规则吗?

(GitHub上的完整VBA.g4语法文件)

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有