我的语法有一个.g4
文件,它可以正常工作。
在我的Java程序中,用户输入必须遵循.g4
文件中的规则。
如何在我的Java代码中使用它来检查用户输入是否有效?
顺便说一句,我的IDE是IntelliJ IDEA
。
这是我的国家/地区代码:
grammar CFG;
/*
* Parser Rules
*/
cfg: (rull NewLine)+;
rull: Variable TransitionOperator sententialForm (Or sententialForm)*;
sententialForm: ((Variable | Literal)+) | Landa;
/*
* Lexer Rules
*/
Literal: [a-z];
Variable: [A-Z];
TransitionOperator: '->';
Or: '|';
OpenParenthesis: '(';
CloseParenthesis: ')';
// Star: '*';
// Plus: '+';
Landa: 'λ';
WhiteSpace: ' ' -> skip;
NewLine: '\n';
这很容易做到:照常设置解析管道:
using Antlr4.Runtime;
using Antlr4.Runtime.Tree;
public void MyParseMethod() {
String input = "your text to parse here";
ICharStream stream = CharStreams.fromstring(input);
ITokenSource lexer = new CFGLexer(stream);
ITokenStream tokens = new CommonTokenStream(lexer);
MyGrammarParser parser = new CFGParser(tokens);
// parser.BuildParseTree = true;
IParseTree tree = parser.cfg();
}
(这里用C#编写),解析运行完成后,检查getNumberOfSyntaxErrors()以查看输入中是否有错误。要进行更细粒度的处理,请设置您自己的错误侦听器并收集产生的错误。