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.
1936 lines
127 KiB
1936 lines
127 KiB
compUnit
|
|
|-- decl
|
|
| `-- constDecl
|
|
| |-- CONST: const
|
|
| |-- bType
|
|
| | `-- INT: int
|
|
| |-- constDef
|
|
| | |-- Ident: base
|
|
| | |-- ASSIGN: =
|
|
| | `-- constInitVal
|
|
| | `-- constExp
|
|
| | `-- addExp
|
|
| | `-- mulExp
|
|
| | `-- unaryExp
|
|
| | `-- primaryExp
|
|
| | `-- number
|
|
| | `-- IntConst: 16
|
|
| `-- SEMI: ;
|
|
|-- funcDef
|
|
| |-- funcType
|
|
| | `-- INT: int
|
|
| |-- Ident: getMaxNum
|
|
| |-- LPAREN: (
|
|
| |-- funcFParams
|
|
| | |-- funcFParam
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | `-- Ident: n
|
|
| | |-- COMMA: ,
|
|
| | `-- funcFParam
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- Ident: arr
|
|
| | |-- LBRACK: [
|
|
| | `-- RBRACK: ]
|
|
| |-- RPAREN: )
|
|
| `-- block
|
|
| |-- LBRACE: {
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: ret
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | `-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 0
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | `-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 0
|
|
| | `-- 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: n
|
|
| | |-- RPAREN: )
|
|
| | `-- stmt
|
|
| | `-- block
|
|
| | |-- LBRACE: {
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- IF: if
|
|
| | | |-- LPAREN: (
|
|
| | | |-- cond
|
|
| | | | `-- lOrExp
|
|
| | | | `-- lAndExp
|
|
| | | | `-- eqExp
|
|
| | | | `-- relExp
|
|
| | | | |-- relExp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | |-- Ident: arr
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | |-- GT: >
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: ret
|
|
| | | |-- RPAREN: )
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: ret
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | |-- Ident: arr
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | `-- RBRACK: ]
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 1
|
|
| | | `-- SEMI: ;
|
|
| | `-- RBRACE: }
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- RETURN: return
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- lVal
|
|
| | | `-- Ident: ret
|
|
| | `-- SEMI: ;
|
|
| `-- RBRACE: }
|
|
|-- funcDef
|
|
| |-- funcType
|
|
| | `-- INT: int
|
|
| |-- Ident: getNumPos
|
|
| |-- LPAREN: (
|
|
| |-- funcFParams
|
|
| | |-- funcFParam
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | `-- Ident: num
|
|
| | |-- COMMA: ,
|
|
| | `-- funcFParam
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | `-- Ident: pos
|
|
| |-- RPAREN: )
|
|
| `-- block
|
|
| |-- LBRACE: {
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: tmp
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | `-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 1
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | `-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 0
|
|
| | `-- 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: pos
|
|
| | |-- RPAREN: )
|
|
| | `-- stmt
|
|
| | `-- block
|
|
| | |-- LBRACE: {
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: num
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | |-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: num
|
|
| | | | |-- DIV: /
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: base
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 1
|
|
| | | `-- SEMI: ;
|
|
| | `-- RBRACE: }
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- RETURN: return
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | |-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: num
|
|
| | | |-- MOD: %
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- lVal
|
|
| | | `-- Ident: base
|
|
| | `-- SEMI: ;
|
|
| `-- RBRACE: }
|
|
|-- funcDef
|
|
| |-- funcType
|
|
| | `-- VOID: void
|
|
| |-- Ident: radixSort
|
|
| |-- LPAREN: (
|
|
| |-- funcFParams
|
|
| | |-- funcFParam
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | `-- Ident: bitround
|
|
| | |-- COMMA: ,
|
|
| | |-- funcFParam
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | |-- Ident: a
|
|
| | | |-- LBRACK: [
|
|
| | | `-- RBRACK: ]
|
|
| | |-- COMMA: ,
|
|
| | |-- funcFParam
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | `-- Ident: l
|
|
| | |-- COMMA: ,
|
|
| | `-- funcFParam
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | `-- Ident: r
|
|
| |-- RPAREN: )
|
|
| `-- block
|
|
| |-- LBRACE: {
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: head
|
|
| | | |-- LBRACK: [
|
|
| | | |-- constExp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: base
|
|
| | | |-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | |-- LBRACE: {
|
|
| | | `-- RBRACE: }
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: tail
|
|
| | | |-- LBRACK: [
|
|
| | | |-- constExp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: base
|
|
| | | |-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | |-- LBRACE: {
|
|
| | | `-- RBRACE: }
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: cnt
|
|
| | | |-- LBRACK: [
|
|
| | | |-- constExp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: base
|
|
| | | |-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | |-- LBRACE: {
|
|
| | | `-- RBRACE: }
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- IF: if
|
|
| | |-- LPAREN: (
|
|
| | |-- cond
|
|
| | | `-- lOrExp
|
|
| | | |-- lOrExp
|
|
| | | | `-- lAndExp
|
|
| | | | `-- eqExp
|
|
| | | | |-- eqExp
|
|
| | | | | `-- relExp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: bitround
|
|
| | | | |-- EQ: ==
|
|
| | | | `-- relExp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | |-- unaryOp
|
|
| | | | | `-- SUB: -
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 1
|
|
| | | |-- OR: ||
|
|
| | | `-- lAndExp
|
|
| | | `-- eqExp
|
|
| | | `-- relExp
|
|
| | | |-- relExp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: l
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 1
|
|
| | | |-- GE: >=
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- lVal
|
|
| | | `-- Ident: r
|
|
| | |-- RPAREN: )
|
|
| | `-- stmt
|
|
| | |-- RETURN: return
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | `-- block
|
|
| | |-- LBRACE: {
|
|
| | |-- blockItem
|
|
| | | `-- decl
|
|
| | | `-- varDecl
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | |-- varDef
|
|
| | | | |-- Ident: i
|
|
| | | | |-- ASSIGN: =
|
|
| | | | `-- initVal
|
|
| | | | `-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: l
|
|
| | | `-- 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: r
|
|
| | | |-- RPAREN: )
|
|
| | | `-- stmt
|
|
| | | `-- block
|
|
| | | |-- LBRACE: {
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | |-- Ident: cnt
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | |-- Ident: getNumPos
|
|
| | | | | | |-- LPAREN: (
|
|
| | | | | | |-- funcRParams
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | |-- Ident: a
|
|
| | | | | | | | |-- LBRACK: [
|
|
| | | | | | | | |-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | `-- lVal
|
|
| | | | | | | | | `-- Ident: i
|
|
| | | | | | | | `-- RBRACK: ]
|
|
| | | | | | | |-- COMMA: ,
|
|
| | | | | | | `-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: bitround
|
|
| | | | | | `-- RPAREN: )
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | |-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: cnt
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | |-- Ident: getNumPos
|
|
| | | | | | | |-- LPAREN: (
|
|
| | | | | | | |-- funcRParams
|
|
| | | | | | | | |-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | `-- lVal
|
|
| | | | | | | | | |-- Ident: a
|
|
| | | | | | | | | |-- LBRACK: [
|
|
| | | | | | | | | |-- exp
|
|
| | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | `-- Ident: i
|
|
| | | | | | | | | `-- RBRACK: ]
|
|
| | | | | | | | |-- COMMA: ,
|
|
| | | | | | | | `-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: bitround
|
|
| | | | | | | `-- RPAREN: )
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- ADD: +
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 1
|
|
| | | | `-- SEMI: ;
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | |-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | |-- ADD: +
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 1
|
|
| | | | `-- SEMI: ;
|
|
| | | `-- RBRACE: }
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | |-- Ident: head
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | `-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: l
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | |-- Ident: tail
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | `-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: l
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | |-- Ident: cnt
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | `-- RBRACK: ]
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 1
|
|
| | | `-- 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: base
|
|
| | | |-- RPAREN: )
|
|
| | | `-- stmt
|
|
| | | `-- block
|
|
| | | |-- LBRACE: {
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | |-- Ident: head
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | |-- Ident: tail
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | |-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | |-- SUB: -
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- number
|
|
| | | | | | `-- IntConst: 1
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | `-- SEMI: ;
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | |-- Ident: tail
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | |-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: head
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- ADD: +
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | |-- Ident: cnt
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | `-- SEMI: ;
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | |-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | |-- ADD: +
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 1
|
|
| | | | `-- SEMI: ;
|
|
| | | `-- RBRACE: }
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 0
|
|
| | | `-- 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: base
|
|
| | | |-- RPAREN: )
|
|
| | | `-- stmt
|
|
| | | `-- block
|
|
| | | |-- LBRACE: {
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- WHILE: while
|
|
| | | | |-- LPAREN: (
|
|
| | | | |-- cond
|
|
| | | | | `-- lOrExp
|
|
| | | | | `-- lAndExp
|
|
| | | | | `-- eqExp
|
|
| | | | | `-- relExp
|
|
| | | | | |-- relExp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: head
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- LT: <
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | |-- Ident: tail
|
|
| | | | | |-- LBRACK: [
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | `-- RBRACK: ]
|
|
| | | | |-- RPAREN: )
|
|
| | | | `-- stmt
|
|
| | | | `-- block
|
|
| | | | |-- LBRACE: {
|
|
| | | | |-- blockItem
|
|
| | | | | `-- decl
|
|
| | | | | `-- varDecl
|
|
| | | | | |-- bType
|
|
| | | | | | `-- INT: int
|
|
| | | | | |-- varDef
|
|
| | | | | | |-- Ident: v
|
|
| | | | | | |-- ASSIGN: =
|
|
| | | | | | `-- initVal
|
|
| | | | | | `-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: a
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | |-- Ident: head
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: i
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | `-- SEMI: ;
|
|
| | | | |-- blockItem
|
|
| | | | | `-- stmt
|
|
| | | | | |-- WHILE: while
|
|
| | | | | |-- LPAREN: (
|
|
| | | | | |-- cond
|
|
| | | | | | `-- lOrExp
|
|
| | | | | | `-- lAndExp
|
|
| | | | | | `-- eqExp
|
|
| | | | | | |-- eqExp
|
|
| | | | | | | `-- relExp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | |-- Ident: getNumPos
|
|
| | | | | | | |-- LPAREN: (
|
|
| | | | | | | |-- funcRParams
|
|
| | | | | | | | |-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | `-- lVal
|
|
| | | | | | | | | `-- Ident: v
|
|
| | | | | | | | |-- COMMA: ,
|
|
| | | | | | | | `-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: bitround
|
|
| | | | | | | `-- RPAREN: )
|
|
| | | | | | |-- NE: !=
|
|
| | | | | | `-- relExp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | |-- RPAREN: )
|
|
| | | | | `-- stmt
|
|
| | | | | `-- block
|
|
| | | | | |-- LBRACE: {
|
|
| | | | | |-- blockItem
|
|
| | | | | | `-- decl
|
|
| | | | | | `-- varDecl
|
|
| | | | | | |-- bType
|
|
| | | | | | | `-- INT: int
|
|
| | | | | | |-- varDef
|
|
| | | | | | | |-- Ident: t
|
|
| | | | | | | |-- ASSIGN: =
|
|
| | | | | | | `-- initVal
|
|
| | | | | | | `-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: v
|
|
| | | | | | `-- SEMI: ;
|
|
| | | | | |-- blockItem
|
|
| | | | | | `-- stmt
|
|
| | | | | | |-- lVal
|
|
| | | | | | | `-- Ident: v
|
|
| | | | | | |-- ASSIGN: =
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | |-- Ident: a
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | |-- Ident: head
|
|
| | | | | | | | |-- LBRACK: [
|
|
| | | | | | | | |-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | |-- Ident: getNumPos
|
|
| | | | | | | | | |-- LPAREN: (
|
|
| | | | | | | | | |-- funcRParams
|
|
| | | | | | | | | | |-- exp
|
|
| | | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | | `-- Ident: t
|
|
| | | | | | | | | | |-- COMMA: ,
|
|
| | | | | | | | | | `-- exp
|
|
| | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | `-- Ident: bitround
|
|
| | | | | | | | | `-- RPAREN: )
|
|
| | | | | | | | `-- RBRACK: ]
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | `-- SEMI: ;
|
|
| | | | | |-- blockItem
|
|
| | | | | | `-- stmt
|
|
| | | | | | |-- lVal
|
|
| | | | | | | |-- Ident: a
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | |-- Ident: head
|
|
| | | | | | | | |-- LBRACK: [
|
|
| | | | | | | | |-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | |-- Ident: getNumPos
|
|
| | | | | | | | | |-- LPAREN: (
|
|
| | | | | | | | | |-- funcRParams
|
|
| | | | | | | | | | |-- exp
|
|
| | | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | | `-- Ident: t
|
|
| | | | | | | | | | |-- COMMA: ,
|
|
| | | | | | | | | | `-- exp
|
|
| | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | `-- Ident: bitround
|
|
| | | | | | | | | `-- RPAREN: )
|
|
| | | | | | | | `-- RBRACK: ]
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | |-- ASSIGN: =
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: t
|
|
| | | | | | `-- SEMI: ;
|
|
| | | | | |-- blockItem
|
|
| | | | | | `-- stmt
|
|
| | | | | | |-- lVal
|
|
| | | | | | | |-- Ident: head
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | |-- Ident: getNumPos
|
|
| | | | | | | | |-- LPAREN: (
|
|
| | | | | | | | |-- funcRParams
|
|
| | | | | | | | | |-- exp
|
|
| | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | `-- Ident: t
|
|
| | | | | | | | | |-- COMMA: ,
|
|
| | | | | | | | | `-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | `-- lVal
|
|
| | | | | | | | | `-- Ident: bitround
|
|
| | | | | | | | `-- RPAREN: )
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | |-- ASSIGN: =
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | |-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | |-- Ident: head
|
|
| | | | | | | | |-- LBRACK: [
|
|
| | | | | | | | |-- exp
|
|
| | | | | | | | | `-- addExp
|
|
| | | | | | | | | `-- mulExp
|
|
| | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | |-- Ident: getNumPos
|
|
| | | | | | | | | |-- LPAREN: (
|
|
| | | | | | | | | |-- funcRParams
|
|
| | | | | | | | | | |-- exp
|
|
| | | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | | `-- Ident: t
|
|
| | | | | | | | | | |-- COMMA: ,
|
|
| | | | | | | | | | `-- exp
|
|
| | | | | | | | | | `-- addExp
|
|
| | | | | | | | | | `-- mulExp
|
|
| | | | | | | | | | `-- unaryExp
|
|
| | | | | | | | | | `-- primaryExp
|
|
| | | | | | | | | | `-- lVal
|
|
| | | | | | | | | | `-- Ident: bitround
|
|
| | | | | | | | | `-- RPAREN: )
|
|
| | | | | | | | `-- RBRACK: ]
|
|
| | | | | | | |-- ADD: +
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- number
|
|
| | | | | | | `-- IntConst: 1
|
|
| | | | | | `-- SEMI: ;
|
|
| | | | | `-- RBRACE: }
|
|
| | | | |-- blockItem
|
|
| | | | | `-- stmt
|
|
| | | | | |-- lVal
|
|
| | | | | | |-- Ident: a
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | |-- Ident: head
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: i
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- ASSIGN: =
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: v
|
|
| | | | | `-- SEMI: ;
|
|
| | | | |-- blockItem
|
|
| | | | | `-- stmt
|
|
| | | | | |-- lVal
|
|
| | | | | | |-- Ident: head
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- ASSIGN: =
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | |-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | |-- Ident: head
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: i
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | |-- ADD: +
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- number
|
|
| | | | | | `-- IntConst: 1
|
|
| | | | | `-- SEMI: ;
|
|
| | | | `-- RBRACE: }
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | |-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | |-- ADD: +
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 1
|
|
| | | | `-- SEMI: ;
|
|
| | | `-- RBRACE: }
|
|
| | `-- RBRACE: }
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | `-- block
|
|
| | |-- LBRACE: {
|
|
| | |-- blockItem
|
|
| | | `-- decl
|
|
| | | `-- varDecl
|
|
| | | |-- bType
|
|
| | | | `-- INT: int
|
|
| | | |-- varDef
|
|
| | | | |-- Ident: i
|
|
| | | | |-- ASSIGN: =
|
|
| | | | `-- initVal
|
|
| | | | `-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: l
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | |-- Ident: head
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | `-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: l
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | |-- Ident: tail
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | `-- RBRACK: ]
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: l
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | |-- Ident: cnt
|
|
| | | | |-- LBRACK: [
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | `-- RBRACK: ]
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 0
|
|
| | | `-- 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: base
|
|
| | | |-- RPAREN: )
|
|
| | | `-- stmt
|
|
| | | `-- block
|
|
| | | |-- LBRACE: {
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- IF: if
|
|
| | | | |-- LPAREN: (
|
|
| | | | |-- cond
|
|
| | | | | `-- lOrExp
|
|
| | | | | `-- lAndExp
|
|
| | | | | `-- eqExp
|
|
| | | | | `-- relExp
|
|
| | | | | |-- relExp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | |-- GT: >
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | |-- RPAREN: )
|
|
| | | | `-- stmt
|
|
| | | | `-- block
|
|
| | | | |-- LBRACE: {
|
|
| | | | |-- blockItem
|
|
| | | | | `-- stmt
|
|
| | | | | |-- lVal
|
|
| | | | | | |-- Ident: head
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- ASSIGN: =
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: tail
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | |-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: i
|
|
| | | | | | | |-- SUB: -
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- number
|
|
| | | | | | | `-- IntConst: 1
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | `-- SEMI: ;
|
|
| | | | |-- blockItem
|
|
| | | | | `-- stmt
|
|
| | | | | |-- lVal
|
|
| | | | | | |-- Ident: tail
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- ASSIGN: =
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | |-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | |-- Ident: head
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: i
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | |-- ADD: +
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: cnt
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | `-- SEMI: ;
|
|
| | | | `-- RBRACE: }
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | |-- Ident: radixSort
|
|
| | | | | |-- LPAREN: (
|
|
| | | | | |-- funcRParams
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | |-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: bitround
|
|
| | | | | | | |-- SUB: -
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- number
|
|
| | | | | | | `-- IntConst: 1
|
|
| | | | | | |-- COMMA: ,
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: a
|
|
| | | | | | |-- COMMA: ,
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | |-- Ident: head
|
|
| | | | | | | |-- LBRACK: [
|
|
| | | | | | | |-- exp
|
|
| | | | | | | | `-- addExp
|
|
| | | | | | | | `-- mulExp
|
|
| | | | | | | | `-- unaryExp
|
|
| | | | | | | | `-- primaryExp
|
|
| | | | | | | | `-- lVal
|
|
| | | | | | | | `-- Ident: i
|
|
| | | | | | | `-- RBRACK: ]
|
|
| | | | | | |-- COMMA: ,
|
|
| | | | | | `-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: tail
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | `-- RPAREN: )
|
|
| | | | `-- SEMI: ;
|
|
| | | |-- blockItem
|
|
| | | | `-- stmt
|
|
| | | | |-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ASSIGN: =
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | |-- addExp
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | |-- ADD: +
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 1
|
|
| | | | `-- SEMI: ;
|
|
| | | `-- RBRACE: }
|
|
| | `-- RBRACE: }
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- RETURN: return
|
|
| | `-- SEMI: ;
|
|
| `-- RBRACE: }
|
|
|-- decl
|
|
| `-- varDecl
|
|
| |-- bType
|
|
| | `-- INT: int
|
|
| |-- varDef
|
|
| | |-- Ident: a
|
|
| | |-- LBRACK: [
|
|
| | |-- constExp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 30000010
|
|
| | `-- RBRACK: ]
|
|
| `-- SEMI: ;
|
|
|-- decl
|
|
| `-- varDecl
|
|
| |-- bType
|
|
| | `-- INT: int
|
|
| |-- varDef
|
|
| | `-- Ident: ans
|
|
| `-- SEMI: ;
|
|
|-- funcDef
|
|
| |-- funcType
|
|
| | `-- INT: int
|
|
| |-- Ident: main
|
|
| |-- LPAREN: (
|
|
| |-- RPAREN: )
|
|
| `-- block
|
|
| |-- LBRACE: {
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: n
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | `-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- Ident: getarray
|
|
| | | |-- LPAREN: (
|
|
| | | |-- funcRParams
|
|
| | | | `-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: a
|
|
| | | `-- RPAREN: )
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- Ident: starttime
|
|
| | | |-- LPAREN: (
|
|
| | | `-- RPAREN: )
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- Ident: radixSort
|
|
| | | |-- LPAREN: (
|
|
| | | |-- funcRParams
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 8
|
|
| | | | |-- COMMA: ,
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: a
|
|
| | | | |-- COMMA: ,
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- number
|
|
| | | | | `-- IntConst: 0
|
|
| | | | |-- COMMA: ,
|
|
| | | | `-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: n
|
|
| | | `-- RPAREN: )
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- decl
|
|
| | `-- varDecl
|
|
| | |-- bType
|
|
| | | `-- INT: int
|
|
| | |-- varDef
|
|
| | | |-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | `-- initVal
|
|
| | | `-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 0
|
|
| | `-- 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: n
|
|
| | |-- RPAREN: )
|
|
| | `-- stmt
|
|
| | `-- block
|
|
| | |-- LBRACE: {
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: ans
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: ans
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | |-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- MUL: *
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | |-- LPAREN: (
|
|
| | | | |-- exp
|
|
| | | | | `-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | |-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | |-- Ident: a
|
|
| | | | | | |-- LBRACK: [
|
|
| | | | | | |-- exp
|
|
| | | | | | | `-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- lVal
|
|
| | | | | | | `-- Ident: i
|
|
| | | | | | `-- RBRACK: ]
|
|
| | | | | |-- MOD: %
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | |-- LPAREN: (
|
|
| | | | | |-- exp
|
|
| | | | | | `-- addExp
|
|
| | | | | | |-- addExp
|
|
| | | | | | | `-- mulExp
|
|
| | | | | | | `-- unaryExp
|
|
| | | | | | | `-- primaryExp
|
|
| | | | | | | `-- number
|
|
| | | | | | | `-- IntConst: 2
|
|
| | | | | | |-- ADD: +
|
|
| | | | | | `-- mulExp
|
|
| | | | | | `-- unaryExp
|
|
| | | | | | `-- primaryExp
|
|
| | | | | | `-- lVal
|
|
| | | | | | `-- Ident: i
|
|
| | | | | `-- RPAREN: )
|
|
| | | | `-- RPAREN: )
|
|
| | | `-- SEMI: ;
|
|
| | |-- blockItem
|
|
| | | `-- stmt
|
|
| | | |-- lVal
|
|
| | | | `-- Ident: i
|
|
| | | |-- ASSIGN: =
|
|
| | | |-- exp
|
|
| | | | `-- addExp
|
|
| | | | |-- addExp
|
|
| | | | | `-- mulExp
|
|
| | | | | `-- unaryExp
|
|
| | | | | `-- primaryExp
|
|
| | | | | `-- lVal
|
|
| | | | | `-- Ident: i
|
|
| | | | |-- ADD: +
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 1
|
|
| | | `-- SEMI: ;
|
|
| | `-- RBRACE: }
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- IF: if
|
|
| | |-- LPAREN: (
|
|
| | |-- cond
|
|
| | | `-- lOrExp
|
|
| | | `-- lAndExp
|
|
| | | `-- eqExp
|
|
| | | `-- relExp
|
|
| | | |-- relExp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: ans
|
|
| | | |-- LT: <
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 0
|
|
| | |-- RPAREN: )
|
|
| | `-- stmt
|
|
| | |-- lVal
|
|
| | | `-- Ident: ans
|
|
| | |-- ASSIGN: =
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- unaryOp
|
|
| | | | `-- SUB: -
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- lVal
|
|
| | | `-- Ident: ans
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- Ident: stoptime
|
|
| | | |-- LPAREN: (
|
|
| | | `-- RPAREN: )
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- Ident: putint
|
|
| | | |-- LPAREN: (
|
|
| | | |-- funcRParams
|
|
| | | | `-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- lVal
|
|
| | | | `-- Ident: ans
|
|
| | | `-- RPAREN: )
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | |-- Ident: putch
|
|
| | | |-- LPAREN: (
|
|
| | | |-- funcRParams
|
|
| | | | `-- exp
|
|
| | | | `-- addExp
|
|
| | | | `-- mulExp
|
|
| | | | `-- unaryExp
|
|
| | | | `-- primaryExp
|
|
| | | | `-- number
|
|
| | | | `-- IntConst: 10
|
|
| | | `-- RPAREN: )
|
|
| | `-- SEMI: ;
|
|
| |-- blockItem
|
|
| | `-- stmt
|
|
| | |-- RETURN: return
|
|
| | |-- exp
|
|
| | | `-- addExp
|
|
| | | `-- mulExp
|
|
| | | `-- unaryExp
|
|
| | | `-- primaryExp
|
|
| | | `-- number
|
|
| | | `-- IntConst: 0
|
|
| | `-- SEMI: ;
|
|
| `-- RBRACE: }
|
|
`-- EOF: <EOF>
|