You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1494 lines
70 KiB

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: <EOF>