我有以下代码接受我的输入文件的输入:
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是否支持?
可以使用Antlr工具对源代码进行lint
。
与'标准'工具运行的唯一区别是不生成输出文件——警告/错误将是相同的。
例如(Java;字符串源内容(手动应用文件'name'):
Tool tool = new Tool();
tool.removeListeners();
tool.addListener(new YourLintErrorReporter());
ANTLRStringStream in = new ANTLRStringStream(content);
GrammarRootAST ast = tool.parse(name, in);
Grammar g = tool.createGrammar(ast);
g.fileName = name; // to ensure all err msgs identify the file by name
tool.process(g, false); // false -> lint: don't gencode
CS
的实现是等价的。