有没有办法在不运行的情况下验证ANTLR输入文件?
我有以下代码获取输入文件的输入:
var inputStream = new AntlrInputStream(File.ReadAllText(fileName));
var lexer = new LegitusLexer(inputStream);
var commonTokenStream = new CommonTokenStream(lexer);
var parser = new LegitusParser(commonTokenStream);
parser.AddErrorListener(this);
var context = parser.program();
var visitor = new LegitusVisitor(_io.GetDefaultMethods(), _io.GetDefaultVariables())
{
Logger = _logger
};
visitor.Visit(context);
但是,当我调用Parser.Program()时,我的程序会尽可能地运行。但是,我需要一种方法来验证输入文件在句法上是正确的,以便用户可以验证而无需运行脚本(与特殊计算机运行)。
antlr4csharp是否可以轻松支持这一点?
I have the following code taking the input of my input file:
var inputStream = new AntlrInputStream(File.ReadAllText(fileName));
var lexer = new LegitusLexer(inputStream);
var commonTokenStream = new CommonTokenStream(lexer);
var parser = new LegitusParser(commonTokenStream);
parser.AddErrorListener(this);
var context = parser.program();
var visitor = new LegitusVisitor(_io.GetDefaultMethods(), _io.GetDefaultVariables())
{
Logger = _logger
};
visitor.Visit(context);
But when I call parser.program(), my program runs as it should. However, I need a way to validate that the input file is syntactically correct, so that users can verify without having to run the scripts (which run against a special machine).
Does Antlr4csharp support this easily?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
ANTLR工具可用于
lint
源。与“标准”工具运行的唯一区别是没有生成输出文件 - 警告/错误将相同。
例如(Java;字符串源内容w/手动应用文件'name'):
cs
实现是等效的。The Antlr tool can be used to
lint
the source.The only difference from a 'standard' tool run is that no output files are generated -- the warnings/errors will be the same.
For example (Java; string source content w/manually applied file 'name'):
The
CS
implementation is equivalent.