compUnit |-- decl | `-- constDecl | |-- CONST: const | |-- bType | | `-- FLOAT: float | |-- constDef | | |-- Ident: RADIUS | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 5.5 | |-- COMMA: , | |-- constDef | | |-- Ident: PI | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 03.141592653589793 | |-- COMMA: , | |-- constDef | | |-- Ident: EPS | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 1e-6 | `-- SEMI: ; |-- decl | `-- constDecl | |-- CONST: const | |-- bType | | `-- FLOAT: float | |-- constDef | | |-- Ident: PI_HEX | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 0x1.921fb6p+1 | |-- COMMA: , | |-- constDef | | |-- Ident: HEX2 | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 0x.AP-3 | `-- SEMI: ; |-- decl | `-- constDecl | |-- CONST: const | |-- bType | | `-- FLOAT: float | |-- constDef | | |-- Ident: FACT | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | |-- unaryOp | | | `-- SUB: - | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: .33E+5 | |-- COMMA: , | |-- constDef | | |-- Ident: EVAL1 | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | |-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: PI | | | |-- MUL: * | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: RADIUS | | |-- MUL: * | | `-- unaryExp | | `-- primaryExp | | `-- lVal | | `-- Ident: RADIUS | |-- COMMA: , | |-- constDef | | |-- Ident: EVAL2 | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | |-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | |-- MUL: * | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: PI_HEX | | |-- MUL: * | | `-- unaryExp | | `-- primaryExp | | `-- lVal | | `-- Ident: RADIUS | |-- COMMA: , | |-- constDef | | |-- Ident: EVAL3 | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | |-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: PI | | | |-- MUL: * | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 2 | | |-- MUL: * | | `-- unaryExp | | `-- primaryExp | | `-- lVal | | `-- Ident: RADIUS | `-- SEMI: ; |-- decl | `-- constDecl | |-- CONST: const | |-- bType | | `-- FLOAT: float | |-- constDef | | |-- Ident: CONV1 | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 233 | |-- COMMA: , | |-- constDef | | |-- Ident: CONV2 | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- IntConst: 0xfff | `-- SEMI: ; |-- decl | `-- constDecl | |-- CONST: const | |-- bType | | `-- INT: int | |-- constDef | | |-- Ident: MAX | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 1e9 | |-- COMMA: , | |-- constDef | | |-- Ident: TWO | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 2.9 | |-- COMMA: , | |-- constDef | | |-- Ident: THREE | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- number | | `-- FloatConst: 3.2 | |-- COMMA: , | |-- constDef | | |-- Ident: FIVE | | |-- ASSIGN: = | | `-- constInitVal | | `-- constExp | | `-- addExp | | |-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: TWO | | |-- ADD: + | | `-- mulExp | | `-- unaryExp | | `-- primaryExp | | `-- lVal | | `-- Ident: THREE | `-- SEMI: ; |-- funcDef | |-- funcType | | `-- FLOAT: float | |-- Ident: float_abs | |-- LPAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- FLOAT: float | | `-- Ident: x | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: x | | | |-- LT: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | |-- RPAREN: ) | | `-- stmt | | |-- RETURN: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- unaryOp | | | | `-- SUB: - | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: x | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- RETURN: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: x | | `-- SEMI: ; | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- FLOAT: float | |-- Ident: circle_area | |-- LPAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- INT: int | | `-- Ident: radius | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- RETURN: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | |-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | |-- LPAREN: ( | | | | |-- exp | | | | | `-- addExp | | | | | |-- addExp | | | | | | `-- mulExp | | | | | | |-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: PI | | | | | | | |-- MUL: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: radius | | | | | | |-- MUL: * | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: radius | | | | | |-- ADD: + | | | | | `-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | |-- LPAREN: ( | | | | | | |-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | |-- mulExp | | | | | | | | `-- unaryExp | | | | | | | | `-- primaryExp | | | | | | | | `-- lVal | | | | | | | | `-- Ident: radius | | | | | | | |-- MUL: * | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: radius | | | | | | `-- RPAREN: ) | | | | | |-- MUL: * | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: PI | | | | `-- RPAREN: ) | | | |-- DIV: / | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 2 | | `-- SEMI: ; | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- INT: int | |-- Ident: float_eq | |-- LPAREN: ( | |-- funcFParams | | |-- funcFParam | | | |-- bType | | | | `-- FLOAT: float | | | `-- Ident: a | | |-- COMMA: , | | `-- funcFParam | | |-- bType | | | `-- FLOAT: float | | `-- Ident: b | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: float_abs | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | |-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: a | | | | | |-- SUB: - | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: b | | | | `-- RPAREN: ) | | | |-- LT: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: EPS | | |-- RPAREN: ) | | |-- stmt | | | `-- block | | | |-- LBRACE: { | | | |-- blockItem | | | | `-- stmt | | | | |-- RETURN: return | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | |-- mulExp | | | | | | |-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- number | | | | | | | `-- IntConst: 1 | | | | | | |-- MUL: * | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- number | | | | | | `-- FloatConst: 2. | | | | | |-- DIV: / | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 2 | | | | `-- SEMI: ; | | | `-- RBRACE: } | | |-- ELSE: else | | `-- stmt | | `-- block | | |-- LBRACE: { | | |-- blockItem | | | `-- stmt | | | |-- RETURN: return | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | `-- SEMI: ; | | `-- RBRACE: } | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- VOID: void | |-- Ident: error | |-- LPAREN: ( | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 101 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 114 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 114 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 111 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 114 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 10 | | | `-- RPAREN: ) | | `-- SEMI: ; | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- VOID: void | |-- Ident: ok | |-- LPAREN: ( | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 111 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 107 | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putch | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 10 | | | `-- RPAREN: ) | | `-- SEMI: ; | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- VOID: void | |-- Ident: assert | |-- LPAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- INT: int | | `-- Ident: cond | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- unaryOp | | | | `-- NOT: ! | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: cond | | |-- RPAREN: ) | | |-- stmt | | | `-- block | | | |-- LBRACE: { | | | |-- blockItem | | | | `-- stmt | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: error | | | | | |-- LPAREN: ( | | | | | `-- RPAREN: ) | | | | `-- SEMI: ; | | | `-- RBRACE: } | | |-- ELSE: else | | `-- stmt | | `-- block | | |-- LBRACE: { | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: ok | | | | |-- LPAREN: ( | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | `-- RBRACE: } | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- VOID: void | |-- Ident: assert_not | |-- LPAREN: ( | |-- funcFParams | | `-- funcFParam | | |-- bType | | | `-- INT: int | | `-- Ident: cond | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: cond | | |-- RPAREN: ) | | |-- stmt | | | `-- block | | | |-- LBRACE: { | | | |-- blockItem | | | | `-- stmt | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: error | | | | | |-- LPAREN: ( | | | | | `-- RPAREN: ) | | | | `-- SEMI: ; | | | `-- RBRACE: } | | |-- ELSE: else | | `-- stmt | | `-- block | | |-- LBRACE: { | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: ok | | | | |-- LPAREN: ( | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | `-- RBRACE: } | `-- RBRACE: } |-- funcDef | |-- funcType | | `-- INT: int | |-- Ident: main | |-- LPAREN: ( | |-- RPAREN: ) | `-- block | |-- LBRACE: { | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: assert_not | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: float_eq | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: HEX2 | | | | | |-- COMMA: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: FACT | | | | `-- RPAREN: ) | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: assert_not | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: float_eq | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: EVAL1 | | | | | |-- COMMA: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: EVAL2 | | | | `-- RPAREN: ) | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: assert | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: float_eq | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: EVAL2 | | | | | |-- COMMA: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: EVAL3 | | | | `-- RPAREN: ) | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: assert | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: float_eq | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | |-- Ident: circle_area | | | | | | |-- LPAREN: ( | | | | | | |-- funcRParams | | | | | | | `-- exp | | | | | | | `-- addExp | | | | | | | `-- mulExp | | | | | | | `-- unaryExp | | | | | | | `-- primaryExp | | | | | | | `-- lVal | | | | | | | `-- Ident: RADIUS | | | | | | `-- RPAREN: ) | | | | | |-- COMMA: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | |-- Ident: circle_area | | | | | |-- LPAREN: ( | | | | | |-- funcRParams | | | | | | `-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: FIVE | | | | | `-- RPAREN: ) | | | | `-- RPAREN: ) | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: assert_not | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: float_eq | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: CONV1 | | | | | |-- COMMA: , | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: CONV2 | | | | `-- RPAREN: ) | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- FloatConst: 1.5 | | |-- RPAREN: ) | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: ok | | | |-- LPAREN: ( | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- unaryOp | | | | `-- NOT: ! | | | `-- unaryExp | | | |-- unaryOp | | | | `-- NOT: ! | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- FloatConst: 3.3 | | |-- RPAREN: ) | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: ok | | | |-- LPAREN: ( | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | |-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: .0 | | | |-- AND: && | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 3 | | |-- RPAREN: ) | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: error | | | |-- LPAREN: ( | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- IF: if | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | |-- lOrExp | | | | `-- lAndExp | | | | `-- eqExp | | | | `-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 0 | | | |-- OR: || | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- FloatConst: 0.3 | | |-- RPAREN: ) | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: ok | | | |-- LPAREN: ( | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- INT: int | | |-- varDef | | | |-- Ident: i | | | |-- ASSIGN: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 1 | | |-- COMMA: , | | |-- varDef | | | |-- Ident: p | | | |-- ASSIGN: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | `-- SEMI: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- FLOAT: float | | |-- varDef | | | |-- Ident: arr | | | |-- LBRACK: [ | | | |-- constExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 10 | | | |-- RBRACK: ] | | | |-- ASSIGN: = | | | `-- initVal | | | |-- LBRACE: { | | | |-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: 1. | | | |-- COMMA: , | | | |-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 2 | | | `-- RBRACE: } | | `-- SEMI: ; | |-- blockItem | | `-- decl | | `-- varDecl | | |-- bType | | | `-- INT: int | | |-- varDef | | | |-- Ident: len | | | |-- ASSIGN: = | | | `-- initVal | | | `-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: getfarray | | | |-- LPAREN: ( | | | |-- funcRParams | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: arr | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- WHILE: while | | |-- LPAREN: ( | | |-- cond | | | `-- lOrExp | | | `-- lAndExp | | | `-- eqExp | | | `-- relExp | | | |-- relExp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: i | | | |-- LT: < | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- lVal | | | `-- Ident: MAX | | |-- RPAREN: ) | | `-- stmt | | `-- block | | |-- LBRACE: { | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- FLOAT: float | | | |-- varDef | | | | |-- Ident: input | | | | |-- ASSIGN: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: getfloat | | | | |-- LPAREN: ( | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | |-- blockItem | | | `-- decl | | | `-- varDecl | | | |-- bType | | | | `-- FLOAT: float | | | |-- varDef | | | | |-- Ident: area | | | | |-- ASSIGN: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | |-- mulExp | | | | | |-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: PI | | | | | |-- MUL: * | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: input | | | | |-- MUL: * | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: input | | | |-- COMMA: , | | | |-- varDef | | | | |-- Ident: area_trunc | | | | |-- ASSIGN: = | | | | `-- initVal | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: circle_area | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: input | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | |-- Ident: arr | | | | |-- LBRACK: [ | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: p | | | | `-- RBRACK: ] | | | |-- ASSIGN: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | |-- Ident: arr | | | | | |-- LBRACK: [ | | | | | |-- exp | | | | | | `-- addExp | | | | | | `-- mulExp | | | | | | `-- unaryExp | | | | | | `-- primaryExp | | | | | | `-- lVal | | | | | | `-- Ident: p | | | | | `-- RBRACK: ] | | | | |-- ADD: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: input | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putfloat | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: area | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 32 | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putint | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: area_trunc | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | |-- Ident: putch | | | | |-- LPAREN: ( | | | | |-- funcRParams | | | | | `-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- number | | | | | `-- IntConst: 10 | | | | `-- RPAREN: ) | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: i | | | |-- ASSIGN: = | | | |-- exp | | | | `-- addExp | | | | `-- mulExp | | | | |-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: i | | | | |-- MUL: * | | | | `-- unaryExp | | | | |-- unaryOp | | | | | `-- SUB: - | | | | `-- unaryExp | | | | |-- unaryOp | | | | | `-- SUB: - | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- FloatConst: 1e1 | | | `-- SEMI: ; | | |-- blockItem | | | `-- stmt | | | |-- lVal | | | | `-- Ident: p | | | |-- ASSIGN: = | | | |-- exp | | | | `-- addExp | | | | |-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: p | | | | |-- ADD: + | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- number | | | | `-- IntConst: 1 | | | `-- SEMI: ; | | `-- RBRACE: } | |-- blockItem | | `-- stmt | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | |-- Ident: putfarray | | | |-- LPAREN: ( | | | |-- funcRParams | | | | |-- exp | | | | | `-- addExp | | | | | `-- mulExp | | | | | `-- unaryExp | | | | | `-- primaryExp | | | | | `-- lVal | | | | | `-- Ident: len | | | | |-- COMMA: , | | | | `-- exp | | | | `-- addExp | | | | `-- mulExp | | | | `-- unaryExp | | | | `-- primaryExp | | | | `-- lVal | | | | `-- Ident: arr | | | `-- RPAREN: ) | | `-- SEMI: ; | |-- blockItem | | `-- stmt | | |-- RETURN: return | | |-- exp | | | `-- addExp | | | `-- mulExp | | | `-- unaryExp | | | `-- primaryExp | | | `-- number | | | `-- IntConst: 0 | | `-- SEMI: ; | `-- RBRACE: } `-- EOF: