我正在尝试使用antlr编写一种简单的交互式(使用System.in作为源代码)语言,但我遇到了一些问题。我在网上找到的示例都是按行周期使用的,例如:
while(readline)
result = parse(line)
doStuff(result)
Run Code Online (Sandbox Code Playgroud)
但是,如果我写的是pascal / smtp / etc之类的东西,并且带有“第一行”,看起来像X需求,该怎么办?我知道可以在doStuff中检查它,但是从逻辑上讲,它是语法的一部分。
还是将命令分成多行怎么办?我可以试试
while(readline)
lines.add(line)
try
result = parse(lines)
lines = []
doStuff(result)
catch
nop
Run Code Online (Sandbox Code Playgroud)
但是与此同时,我也隐藏了真正的错误。
或者我可以每次重新分析所有行,但是:
可以使用ANTLR完成此操作吗?