使用antlr4检查Java代码中的用户输入

问题描述 投票:-1回答:1

我的语法有一个.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';
java intellij-idea user-input antlr4
1个回答
0
投票

这很容易做到:照常设置解析管道:

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()以查看输入中是否有错误。要进行更细粒度的处理,请设置您自己的错误侦听器并收集产生的错误。

© www.soinside.com 2019 - 2024. All rights reserved.