1. JAVA环境

2. Antler 工具包:

  antlr-3.5.1-complete-no-st3.jar  

  路径加入classpath

3. cmd命令行:

    java org.antlr.Tool XXXXX.g

  (此命令可生成.java或.cs文件等,因.g文件中内容而异)

    1).g (转成.cs)  实例:

grammar SimpleCalc;

options {
    language=CSharp2;
}

tokens {
    PLUS     = '+' ;
    MINUS    = '-' ;
    MULT    = '*' ;
    DIV    = '/' ;
}

@members {
        static void Main(string[] args)
        {
            string source = Console.ReadLine();
            SimpleCalcLexer lex = new SimpleCalcLexer(new ANTLRStringStream(source));
            CommonTokenStream tokens = new CommonTokenStream(lex);
            SimpleCalcParser parser = new SimpleCalcParser(tokens);
            try
            {
                Console.WriteLine(parser.expr());
            }
            catch (RecognitionException e)
            {
                Console.Error.WriteLine(e.StackTrace);
            }
            Console.ReadLine();
        }
}

//PARSER RULES
expr returns [int value] :
    e=term { $value=$e.value; }
    (   
      PLUS e=term { $value += $e.value; }
      |
      MINUS e=term { $value -= $e.value; }
    )*;
term returns [int value] : 
    e=factor { $value = $e.value; }
    (
      MULT e=factor { $value *= $e.value; }
      |
      DIV e=factor { $value /= $e.value; }
    )* ;
factor returns [int value] : NUMBER { $value = int.Parse($NUMBER.text); };

//LEXER RULES
NUMBER    : (DIGIT)+ ;
WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+     { $channel = HIDDEN; } ;
fragment DIGIT    : '0'..'9' ;
c# SimpleCalc.g

相关文章:

  • 2021-09-12
  • 2021-10-07
  • 2021-09-05
  • 2021-11-03
  • 2022-12-23
  • 2022-01-15
  • 2021-12-22
  • 2021-10-22
猜你喜欢
  • 2021-12-05
  • 2021-08-25
  • 2022-02-07
  • 2021-06-11
  • 2022-12-23
  • 2021-09-25
  • 2022-12-23
相关资源
相似解决方案