Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 更改Antlr4打印树的方式_Regex_Parsing_Intellij Idea_Antlr4 - Fatal编程技术网

Regex 更改Antlr4打印树的方式

Regex 更改Antlr4打印树的方式,regex,parsing,intellij-idea,antlr4,Regex,Parsing,Intellij Idea,Antlr4,我正在IntelliJ中使用Antlr4为算术表达式制作一个小型编译器。 我想打印树,并使用此代码段来执行此操作 JFrame frame = new JFrame("Tree"); JPanel panel = new JPanel(); TreeViewer viewr = new TreeViewer(Arrays.asList( parser.getRuleNames()),tree); viewr.setScale(2);//scale a li

我正在IntelliJ中使用Antlr4为算术表达式制作一个小型编译器。 我想打印树,并使用此代码段来执行此操作

    JFrame frame = new JFrame("Tree");
    JPanel panel = new JPanel();
    TreeViewer viewr = new TreeViewer(Arrays.asList(
    parser.getRuleNames()),tree);
    viewr.setScale(2);//scale a little
    panel.add(viewr);
    frame.add(panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400,400);
    frame.setVisible(true);
对于输入
3*5\n

有没有办法调整它,使它从上到下读取

                    Statement

              Expression         /n
         INT      *     INT 
          3              5
相反? 我的语法定义如下:

grammar Expression;

statement:   expression ENDSTATEMENT           # printExpr
        |   ID '=' expression ENDSTATEMENT     # assign
        |   ENDSTATEMENT                       # blank
        ;

expression:   expression MULTDIV expression      # MulDiv
          |   expression ADDSUB expression       # AddSub
          |   INT                                # int
          |   FLOAT                              # float
          |   ID                                 # id
          |   '(' expression ')'                 # parens
          ;

ID  :   [a-zA-Z]+ ;      // match identifiers
INT :   [0-9]+ ;         // match integers
MULTDIV : ('*' | '/');   //match multiply or divide
ADDSUB  : ('+' | '-');   //match add or subtract
FLOAT:  INT '.' INT;     //match a floating point number
ENDSTATEMENT:'\r'? '\n' ;     // return newlines to parser (is end-statement signal)
WHITESPACE  :   [ \t]+ -> skip ; // ignore whitespace

不,除非您自己更改树查看器的源