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.

23097 lines
3.2 MiB

compUnit
|-- decl
| `-- constDecl
| |-- Const: const
| |-- bType
| | `-- Int: int
| |-- constDef
| | |-- Ident: SHIFT_TABLE
| | |-- L_BRACKET: [
| | |-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 16
| | |-- R_BRACKET: ]
| | |-- Assign: =
| | `-- constInitVal
| | |-- L_BRACE: {
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 8
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 16
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 32
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 64
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 128
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 256
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 512
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 1024
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2048
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 4096
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 8192
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 16384
| | |-- Comma: ,
| | |-- constInitVal
| | | `-- constExp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 32768
| | `-- R_BRACE: }
| `-- Semi: ;
|-- funcDef
| |-- funcType
| | `-- Int: int
| |-- Ident: long_func
| |-- L_PAREN: (
| |-- R_PAREN: )
| `-- block
| |-- L_BRACE: {
| |-- blockItem
| | `-- decl
| | `-- varDecl
| | |-- bType
| | | `-- Int: int
| | |-- varDef
| | | `-- Ident: ans
| | |-- Comma: ,
| | |-- varDef
| | | `-- Ident: i
| | |-- Comma: ,
| | |-- varDef
| | | `-- Ident: x
| | |-- Comma: ,
| | |-- varDef
| | | `-- Ident: y
| | |-- Comma: ,
| | |-- varDef
| | | `-- Ident: cur
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | `-- block
| | |-- L_BRACE: {
| | |-- blockItem
| | | `-- decl
| | | `-- varDecl
| | | |-- bType
| | | | `-- Int: int
| | | |-- varDef
| | | | |-- Ident: pl
| | | | |-- Assign: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 2
| | | |-- Comma: ,
| | | |-- varDef
| | | | |-- Ident: pr
| | | | |-- Assign: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | |-- Comma: ,
| | | |-- varDef
| | | | |-- Ident: pres
| | | | |-- Assign: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- Semi: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- While: while
| | | |-- L_PAREN: (
| | | |-- cond
| | | | `-- lOrExp
| | | | `-- lAndExp
| | | | `-- eqExp
| | | | `-- relExp
| | | | |-- relExp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pr
| | | | |-- GtOp: >
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | |-- R_PAREN: )
| | | `-- stmt
| | | `-- block
| | | |-- L_BRACE: {
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: ans
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: i
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: x
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pr
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: y
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- While: while
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: i
| | | | | |-- LtOp: <
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 16
| | | | |-- R_PAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | |-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- ModOp: %
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | |-- AndOp: &&
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | |-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- ModOp: %
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- AddOp: +
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | |-- MulOp: *
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | |-- L_BRACKET: [
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | `-- R_BRACKET: ]
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: x
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | |-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- DivOp: /
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: y
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | |-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- DivOp: /
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: i
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- AddOp: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- If: if
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | |-- R_PAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- decl
| | | | | | `-- varDecl
| | | | | | |-- bType
| | | | | | | `-- Int: int
| | | | | | |-- varDef
| | | | | | | |-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pres
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pl
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mres
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- While: while
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- LtOp: <
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 16
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | |-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- AndOp: &&
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- ModOp: %
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | |-- MulOp: *
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- AddOp: +
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- decl
| | | | | | | | | `-- varDecl
| | | | | | | | | |-- bType
| | | | | | | | | | `-- Int: int
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: mres
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: mres
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- decl
| | | | | | | | `-- varDecl
| | | | | | | | |-- bType
| | | | | | | | | `-- Int: int
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 15
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GeOp: >=
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 15
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GtOp: >
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mres
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: pres
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- decl
| | | | | `-- varDecl
| | | | | |-- bType
| | | | | | `-- Int: int
| | | | | |-- varDef
| | | | | | |-- Ident: ml
| | | | | | |-- Assign: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pl
| | | | | |-- Comma: ,
| | | | | |-- varDef
| | | | | | |-- Ident: mr
| | | | | | |-- Assign: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pl
| | | | | |-- Comma: ,
| | | | | |-- varDef
| | | | | | |-- Ident: mres
| | | | | | |-- Assign: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- While: while
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: mr
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 1
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- While: while
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- LtOp: <
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 16
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | |-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- ModOp: %
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | |-- AndOp: &&
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- ModOp: %
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- AddOp: +
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | |-- MulOp: *
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- DivOp: /
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- DivOp: /
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | |-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- AddOp: +
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- decl
| | | | | | | | `-- varDecl
| | | | | | | | |-- bType
| | | | | | | | | `-- Int: int
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: mres
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 15
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: mres
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- decl
| | | | | | | `-- varDecl
| | | | | | | |-- bType
| | | | | | | | `-- Int: int
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: al
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: c
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | `-- Ident: sum
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: c
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 16
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: sum
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 16
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | |-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | |-- GtOp: >
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 15
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- MulOp: *
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: al
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ml
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 1
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- GeOp: >=
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 15
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- GtOp: >
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- GtOp: >
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: mr
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: mres
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: pl
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: x
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pr
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: y
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- If: if
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: y
| | | | | |-- GeOp: >=
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 15
| | | | |-- R_PAREN: )
| | | | |-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- LtOp: <
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | `-- R_BRACE: }
| | | | |-- Else: else
| | | | `-- stmt
| | | | |-- If: if
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: y
| | | | | |-- GtOp: >
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | |-- R_PAREN: )
| | | | |-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- GtOp: >
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0x7fff
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | |-- SubOp: -
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- DivOp: /
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | |-- L_BRACKET: [
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | `-- R_BRACKET: ]
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | `-- R_BRACE: }
| | | | |-- Else: else
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: x
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: pr
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | `-- Semi: ;
| | | `-- R_BRACE: }
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: ans
| | | |-- Assign: =
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: pres
| | | `-- Semi: ;
| | `-- R_BRACE: }
| |-- blockItem
| | `-- stmt
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: putint
| | | |-- L_PAREN: (
| | | |-- funcRParams
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: ans
| | | `-- R_PAREN: )
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: putch
| | | |-- L_PAREN: (
| | | |-- funcRParams
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 10
| | | `-- R_PAREN: )
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | `-- block
| | |-- L_BRACE: {
| | |-- blockItem
| | | `-- decl
| | | `-- varDecl
| | | |-- bType
| | | | `-- Int: int
| | | |-- varDef
| | | | |-- Ident: pl
| | | | |-- Assign: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 2
| | | |-- Comma: ,
| | | |-- varDef
| | | | |-- Ident: pr
| | | | |-- Assign: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | |-- Comma: ,
| | | |-- varDef
| | | | |-- Ident: pres
| | | | |-- Assign: =
| | | | `-- initVal
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- Semi: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- While: while
| | | |-- L_PAREN: (
| | | |-- cond
| | | | `-- lOrExp
| | | | `-- lAndExp
| | | | `-- eqExp
| | | | `-- relExp
| | | | |-- relExp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pr
| | | | |-- GtOp: >
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 0
| | | |-- R_PAREN: )
| | | `-- stmt
| | | `-- block
| | | |-- L_BRACE: {
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: ans
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: i
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: x
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pr
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: y
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- While: while
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: i
| | | | | |-- LtOp: <
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 16
| | | | |-- R_PAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | |-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- ModOp: %
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | |-- AndOp: &&
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | |-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- ModOp: %
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- AddOp: +
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | |-- MulOp: *
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | |-- L_BRACKET: [
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | `-- R_BRACKET: ]
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: x
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | |-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- DivOp: /
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: y
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | |-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- DivOp: /
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 2
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: i
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | |-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- AddOp: +
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- If: if
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | |-- R_PAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- decl
| | | | | | `-- varDecl
| | | | | | |-- bType
| | | | | | | `-- Int: int
| | | | | | |-- varDef
| | | | | | | |-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pres
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pl
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mres
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- While: while
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- LtOp: <
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 16
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | |-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- AndOp: &&
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- ModOp: %
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | |-- MulOp: *
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- AddOp: +
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- decl
| | | | | | | | | `-- varDecl
| | | | | | | | | |-- bType
| | | | | | | | | | `-- Int: int
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: mres
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: mres
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- decl
| | | | | | | | `-- varDecl
| | | | | | | | |-- bType
| | | | | | | | | `-- Int: int
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 15
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GeOp: >=
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 15
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GtOp: >
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mres
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: pres
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- decl
| | | | | `-- varDecl
| | | | | |-- bType
| | | | | | `-- Int: int
| | | | | |-- varDef
| | | | | | |-- Ident: ml
| | | | | | |-- Assign: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pl
| | | | | |-- Comma: ,
| | | | | |-- varDef
| | | | | | |-- Ident: mr
| | | | | | |-- Assign: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pl
| | | | | |-- Comma: ,
| | | | | |-- varDef
| | | | | | |-- Ident: mres
| | | | | | |-- Assign: =
| | | | | | `-- initVal
| | | | | | `-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- While: while
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: mr
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 1
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- While: while
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- LtOp: <
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 16
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | |-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- ModOp: %
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | |-- AndOp: &&
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- ModOp: %
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- AddOp: +
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | |-- MulOp: *
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- DivOp: /
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- DivOp: /
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | |-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- AddOp: +
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- decl
| | | | | | | | `-- varDecl
| | | | | | | | |-- bType
| | | | | | | | | `-- Int: int
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: mres
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 15
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: mres
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- decl
| | | | | | | `-- varDecl
| | | | | | | |-- bType
| | | | | | | | `-- Int: int
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: al
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: c
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | `-- Ident: sum
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: c
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 16
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: sum
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 16
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | |-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | |-- GtOp: >
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 15
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- MulOp: *
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: al
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ml
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 1
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- GeOp: >=
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 15
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- GtOp: >
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- GtOp: >
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: mr
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: mres
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: pl
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: x
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pr
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: y
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- If: if
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: y
| | | | | |-- GeOp: >=
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 15
| | | | |-- R_PAREN: )
| | | | |-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- LtOp: <
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | `-- R_BRACE: }
| | | | |-- Else: else
| | | | `-- stmt
| | | | |-- If: if
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: y
| | | | | |-- GtOp: >
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | |-- R_PAREN: )
| | | | |-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | |-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- GtOp: >
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0x7fff
| | | | | | |-- R_PAREN: )
| | | | | | |-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | |-- SubOp: -
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- Else: else
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- DivOp: /
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | |-- L_BRACKET: [
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | `-- R_BRACKET: ]
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | `-- R_BRACE: }
| | | | |-- Else: else
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: x
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: pr
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | `-- Semi: ;
| | | `-- R_BRACE: }
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: ans
| | | |-- Assign: =
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: pres
| | | `-- Semi: ;
| | `-- R_BRACE: }
| |-- blockItem
| | `-- stmt
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: putint
| | | |-- L_PAREN: (
| | | |-- funcRParams
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: ans
| | | `-- R_PAREN: )
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: putch
| | | |-- L_PAREN: (
| | | |-- funcRParams
| | | | `-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 10
| | | `-- R_PAREN: )
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: cur
| | |-- Assign: =
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 2
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | |-- While: while
| | |-- L_PAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | |-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: cur
| | | |-- LtOp: <
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 16
| | |-- R_PAREN: )
| | `-- stmt
| | `-- block
| | |-- L_BRACE: {
| | |-- blockItem
| | | `-- stmt
| | | `-- block
| | | |-- L_BRACE: {
| | | |-- blockItem
| | | | `-- decl
| | | | `-- varDecl
| | | | |-- bType
| | | | | `-- Int: int
| | | | |-- varDef
| | | | | |-- Ident: pl
| | | | | |-- Assign: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 2
| | | | |-- Comma: ,
| | | | |-- varDef
| | | | | |-- Ident: pr
| | | | | |-- Assign: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: cur
| | | | |-- Comma: ,
| | | | |-- varDef
| | | | | |-- Ident: pres
| | | | | |-- Assign: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- While: while
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pr
| | | | | |-- GtOp: >
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | |-- R_PAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: i
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: x
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pr
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: y
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- While: while
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | |-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- LtOp: <
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 16
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | |-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- ModOp: %
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | |-- AndOp: &&
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- ModOp: %
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | |-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- AddOp: +
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | |-- MulOp: *
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | |-- L_BRACKET: [
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | `-- R_BRACKET: ]
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- DivOp: /
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- DivOp: /
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- AddOp: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 1
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- decl
| | | | | | | `-- varDecl
| | | | | | | |-- bType
| | | | | | | | `-- Int: int
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: ml
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: pres
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: mr
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: pl
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: mres
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: mr
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 16
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | |-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- decl
| | | | | | | | | | `-- varDecl
| | | | | | | | | | |-- bType
| | | | | | | | | | | `-- Int: int
| | | | | | | | | | |-- varDef
| | | | | | | | | | | |-- Ident: al
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | `-- initVal
| | | | | | | | | | | `-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: mres
| | | | | | | | | | |-- Comma: ,
| | | | | | | | | | |-- varDef
| | | | | | | | | | | |-- Ident: c
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | `-- initVal
| | | | | | | | | | | `-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ml
| | | | | | | | | | |-- Comma: ,
| | | | | | | | | | |-- varDef
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: al
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | |-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | |-- Else: else
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: al
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- While: while
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: al
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: mres
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- decl
| | | | | | | | | `-- varDecl
| | | | | | | | | |-- bType
| | | | | | | | | | `-- Int: int
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: mr
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- GeOp: >=
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 15
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- GtOp: >
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: mr
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mres
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: pres
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- decl
| | | | | | `-- varDecl
| | | | | | |-- bType
| | | | | | | `-- Int: int
| | | | | | |-- varDef
| | | | | | | |-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pl
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pl
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mres
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- While: while
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- LtOp: <
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 16
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | |-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- AndOp: &&
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- ModOp: %
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | |-- MulOp: *
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- AddOp: +
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- decl
| | | | | | | | | `-- varDecl
| | | | | | | | | |-- bType
| | | | | | | | | | `-- Int: int
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: mres
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: mres
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- decl
| | | | | | | | `-- varDecl
| | | | | | | | |-- bType
| | | | | | | | | `-- Int: int
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 15
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GeOp: >=
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 15
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GtOp: >
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mres
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: pl
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: x
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pr
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: y
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | |-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- GeOp: >=
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 15
| | | | | |-- R_PAREN: )
| | | | | |-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- LtOp: <
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | `-- R_BRACE: }
| | | | | |-- Else: else
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | |-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- GtOp: >
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | |-- R_PAREN: )
| | | | | |-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- GtOp: >
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0x7fff
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | |-- SubOp: -
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | `-- R_BRACE: }
| | | | | |-- Else: else
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: x
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: pr
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: ans
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pres
| | | | `-- Semi: ;
| | | `-- R_BRACE: }
| | |-- blockItem
| | | `-- stmt
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | |-- Ident: putint
| | | | |-- L_PAREN: (
| | | | |-- funcRParams
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: ans
| | | | `-- R_PAREN: )
| | | `-- Semi: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | |-- Ident: putch
| | | | |-- L_PAREN: (
| | | | |-- funcRParams
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 10
| | | | `-- R_PAREN: )
| | | `-- Semi: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: cur
| | | |-- Assign: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: cur
| | | | |-- AddOp: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- Semi: ;
| | `-- R_BRACE: }
| |-- blockItem
| | `-- stmt
| | |-- lVal
| | | `-- Ident: cur
| | |-- Assign: =
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 0
| | `-- Semi: ;
| |-- blockItem
| | `-- stmt
| | |-- While: while
| | |-- L_PAREN: (
| | |-- cond
| | | `-- lOrExp
| | | `-- lAndExp
| | | `-- eqExp
| | | `-- relExp
| | | |-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: cur
| | | |-- LtOp: <
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 16
| | |-- R_PAREN: )
| | `-- stmt
| | `-- block
| | |-- L_BRACE: {
| | |-- blockItem
| | | `-- stmt
| | | `-- block
| | | |-- L_BRACE: {
| | | |-- blockItem
| | | | `-- decl
| | | | `-- varDecl
| | | | |-- bType
| | | | | `-- Int: int
| | | | |-- varDef
| | | | | |-- Ident: pl
| | | | | |-- Assign: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 2
| | | | |-- Comma: ,
| | | | |-- varDef
| | | | | |-- Ident: pr
| | | | | |-- Assign: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: cur
| | | | |-- Comma: ,
| | | | |-- varDef
| | | | | |-- Ident: pres
| | | | | |-- Assign: =
| | | | | `-- initVal
| | | | | `-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 1
| | | | `-- Semi: ;
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- While: while
| | | | |-- L_PAREN: (
| | | | |-- cond
| | | | | `-- lOrExp
| | | | | `-- lAndExp
| | | | | `-- eqExp
| | | | | `-- relExp
| | | | | |-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pr
| | | | | |-- GtOp: >
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- number
| | | | | `-- IntConst: 0
| | | | |-- R_PAREN: )
| | | | `-- stmt
| | | | `-- block
| | | | |-- L_BRACE: {
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: i
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: x
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pr
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: y
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- While: while
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | |-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- LtOp: <
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 16
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- If: if
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | |-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- ModOp: %
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 2
| | | | | | | |-- AndOp: &&
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- ModOp: %
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | |-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- AddOp: +
| | | | | | | | `-- mulExp
| | | | | | | | |-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | |-- MulOp: *
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | |-- L_BRACKET: [
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | `-- R_BRACKET: ]
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: x
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- DivOp: /
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | |-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- DivOp: /
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 2
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: i
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | |-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- AddOp: +
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 1
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | |-- R_PAREN: )
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- decl
| | | | | | | `-- varDecl
| | | | | | | |-- bType
| | | | | | | | `-- Int: int
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: ml
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: pres
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: mr
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: pl
| | | | | | | |-- Comma: ,
| | | | | | | |-- varDef
| | | | | | | | |-- Ident: mres
| | | | | | | | |-- Assign: =
| | | | | | | | `-- initVal
| | | | | | | | `-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: mr
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- LtOp: <
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 16
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | |-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 1
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- decl
| | | | | | | | | | `-- varDecl
| | | | | | | | | | |-- bType
| | | | | | | | | | | `-- Int: int
| | | | | | | | | | |-- varDef
| | | | | | | | | | | |-- Ident: al
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | `-- initVal
| | | | | | | | | | | `-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: mres
| | | | | | | | | | |-- Comma: ,
| | | | | | | | | | |-- varDef
| | | | | | | | | | | |-- Ident: c
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | `-- initVal
| | | | | | | | | | | `-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ml
| | | | | | | | | | |-- Comma: ,
| | | | | | | | | | |-- varDef
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: al
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | |-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | |-- Else: else
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: al
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- While: while
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: al
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: mres
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- decl
| | | | | | | | | `-- varDecl
| | | | | | | | | |-- bType
| | | | | | | | | | `-- Int: int
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: mr
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- GeOp: >=
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 15
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | |-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- GtOp: >
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | |-- R_PAREN: )
| | | | | | | | |-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- Else: else
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: mr
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mres
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: pres
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: ans
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- decl
| | | | | | `-- varDecl
| | | | | | |-- bType
| | | | | | | `-- Int: int
| | | | | | |-- varDef
| | | | | | | |-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pl
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: pl
| | | | | | |-- Comma: ,
| | | | | | |-- varDef
| | | | | | | |-- Ident: mres
| | | | | | | |-- Assign: =
| | | | | | | `-- initVal
| | | | | | | `-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- number
| | | | | | | `-- IntConst: 0
| | | | | | `-- Semi: ;
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- While: while
| | | | | | |-- L_PAREN: (
| | | | | | |-- cond
| | | | | | | `-- lOrExp
| | | | | | | `-- lAndExp
| | | | | | | `-- eqExp
| | | | | | | `-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mr
| | | | | | |-- R_PAREN: )
| | | | | | `-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: i
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- While: while
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- LtOp: <
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 16
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- If: if
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | |-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- ModOp: %
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 2
| | | | | | | | | |-- AndOp: &&
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- ModOp: %
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- AddOp: +
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | |-- MulOp: *
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 2
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: i
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | |-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- AddOp: +
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 1
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | |-- R_PAREN: )
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- decl
| | | | | | | | | `-- varDecl
| | | | | | | | | |-- bType
| | | | | | | | | | `-- Int: int
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: mres
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | |-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | `-- initVal
| | | | | | | | | | `-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ml
| | | | | | | | | |-- Comma: ,
| | | | | | | | | |-- varDef
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | |-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | `-- block
| | | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- Else: else
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- GtOp: >
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- While: while
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | |-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: c
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: al
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: sum
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: mres
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- decl
| | | | | | | | `-- varDecl
| | | | | | | | |-- bType
| | | | | | | | | `-- Int: int
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | |-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | `-- initVal
| | | | | | | | | `-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: ml
| | | | | | | | |-- Comma: ,
| | | | | | | | |-- varDef
| | | | | | | | | `-- Ident: sum
| | | | | | | | `-- Semi: ;
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- While: while
| | | | | | | | |-- L_PAREN: (
| | | | | | | | |-- cond
| | | | | | | | | `-- lOrExp
| | | | | | | | | `-- lAndExp
| | | | | | | | | `-- eqExp
| | | | | | | | | `-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: c
| | | | | | | | |-- R_PAREN: )
| | | | | | | | `-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | |-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- If: if
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- cond
| | | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | |-- eqExp
| | | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | | |-- EqOp: ==
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | `-- block
| | | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- Else: else
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: i
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- While: while
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 16
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- If: if
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 15
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: i
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: c
| | | | | | | | | | | | `-- R_PAREN: )
| | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- While: while
| | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | |-- cond
| | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | `-- eqExp
| | | | | | | | | | | `-- relExp
| | | | | | | | | | | |-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- LtOp: <
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 16
| | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | `-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- If: if
| | | | | | | | | | | |-- L_PAREN: (
| | | | | | | | | | | |-- cond
| | | | | | | | | | | | `-- lOrExp
| | | | | | | | | | | | `-- lAndExp
| | | | | | | | | | | | |-- lAndExp
| | | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | | |-- AndOp: &&
| | | | | | | | | | | | `-- eqExp
| | | | | | | | | | | | `-- relExp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- ModOp: %
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | |-- R_PAREN: )
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | `-- block
| | | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | | |-- blockItem
| | | | | | | | | | | | `-- stmt
| | | | | | | | | | | | |-- lVal
| | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | | |-- MulOp: *
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 2
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: i
| | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: c
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: al
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: sum
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: al
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: ml
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: x
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: y
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 1
| | | | | | | `-- Semi: ;
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GeOp: >=
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 15
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- LtOp: <
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- number
| | | | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 0
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: y
| | | | | | | | |-- GtOp: >
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- If: if
| | | | | | | | | |-- L_PAREN: (
| | | | | | | | | |-- cond
| | | | | | | | | | `-- lOrExp
| | | | | | | | | | `-- lAndExp
| | | | | | | | | | `-- eqExp
| | | | | | | | | | `-- relExp
| | | | | | | | | | |-- relExp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- GtOp: >
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0x7fff
| | | | | | | | | |-- R_PAREN: )
| | | | | | | | | |-- stmt
| | | | | | | | | | `-- block
| | | | | | | | | | |-- L_BRACE: {
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | |-- blockItem
| | | | | | | | | | | `-- stmt
| | | | | | | | | | | |-- lVal
| | | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | | |-- Assign: =
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | | |-- exp
| | | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | | `-- Semi: ;
| | | | | | | | | | `-- R_BRACE: }
| | | | | | | | | |-- Else: else
| | | | | | | | | `-- stmt
| | | | | | | | | `-- block
| | | | | | | | | |-- L_BRACE: {
| | | | | | | | | |-- blockItem
| | | | | | | | | | `-- stmt
| | | | | | | | | | |-- lVal
| | | | | | | | | | | `-- Ident: ans
| | | | | | | | | | |-- Assign: =
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | |-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- DivOp: /
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | | |-- exp
| | | | | | | | | | | | `-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | | `-- Semi: ;
| | | | | | | | | `-- R_BRACE: }
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- lVal
| | | | | | | | `-- Ident: mr
| | | | | | | |-- Assign: =
| | | | | | | |-- exp
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- lVal
| | | | | | | | `-- Ident: ans
| | | | | | | `-- Semi: ;
| | | | | | `-- R_BRACE: }
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: mres
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: pl
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: x
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: pr
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: y
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 1
| | | | | `-- Semi: ;
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | |-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- GeOp: >=
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 15
| | | | | |-- R_PAREN: )
| | | | | |-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- LtOp: <
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- number
| | | | | | | | | | `-- IntConst: 0xffff
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- number
| | | | | | | | | `-- IntConst: 0
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | `-- R_BRACE: }
| | | | | |-- Else: else
| | | | | `-- stmt
| | | | | |-- If: if
| | | | | |-- L_PAREN: (
| | | | | |-- cond
| | | | | | `-- lOrExp
| | | | | | `-- lAndExp
| | | | | | `-- eqExp
| | | | | | `-- relExp
| | | | | | |-- relExp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: y
| | | | | | |-- GtOp: >
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- number
| | | | | | `-- IntConst: 0
| | | | | |-- R_PAREN: )
| | | | | |-- stmt
| | | | | | `-- block
| | | | | | |-- L_BRACE: {
| | | | | | |-- blockItem
| | | | | | | `-- stmt
| | | | | | | |-- If: if
| | | | | | | |-- L_PAREN: (
| | | | | | | |-- cond
| | | | | | | | `-- lOrExp
| | | | | | | | `-- lAndExp
| | | | | | | | `-- eqExp
| | | | | | | | `-- relExp
| | | | | | | | |-- relExp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | `-- Ident: x
| | | | | | | | |-- GtOp: >
| | | | | | | | `-- addExp
| | | | | | | | `-- mulExp
| | | | | | | | `-- unaryExp
| | | | | | | | `-- primaryExp
| | | | | | | | `-- number
| | | | | | | | `-- IntConst: 0x7fff
| | | | | | | |-- R_PAREN: )
| | | | | | | |-- stmt
| | | | | | | | `-- block
| | | | | | | | |-- L_BRACE: {
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | |-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: x
| | | | | | | | | | |-- DivOp: /
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- lVal
| | | | | | | | | | | `-- Ident: y
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | |-- blockItem
| | | | | | | | | `-- stmt
| | | | | | | | | |-- lVal
| | | | | | | | | | `-- Ident: ans
| | | | | | | | | |-- Assign: =
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | |-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: x
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 65536
| | | | | | | | | | |-- SubOp: -
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | | |-- exp
| | | | | | | | | | | `-- addExp
| | | | | | | | | | | |-- addExp
| | | | | | | | | | | | |-- addExp
| | | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | | `-- number
| | | | | | | | | | | | | `-- IntConst: 15
| | | | | | | | | | | | |-- SubOp: -
| | | | | | | | | | | | `-- mulExp
| | | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | | `-- lVal
| | | | | | | | | | | | `-- Ident: y
| | | | | | | | | | | |-- AddOp: +
| | | | | | | | | | | `-- mulExp
| | | | | | | | | | | `-- unaryExp
| | | | | | | | | | | `-- primaryExp
| | | | | | | | | | | `-- number
| | | | | | | | | | | `-- IntConst: 1
| | | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | | `-- Semi: ;
| | | | | | | | `-- R_BRACE: }
| | | | | | | |-- Else: else
| | | | | | | `-- stmt
| | | | | | | `-- block
| | | | | | | |-- L_BRACE: {
| | | | | | | |-- blockItem
| | | | | | | | `-- stmt
| | | | | | | | |-- lVal
| | | | | | | | | `-- Ident: ans
| | | | | | | | |-- Assign: =
| | | | | | | | |-- exp
| | | | | | | | | `-- addExp
| | | | | | | | | `-- mulExp
| | | | | | | | | |-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: x
| | | | | | | | | |-- DivOp: /
| | | | | | | | | `-- unaryExp
| | | | | | | | | `-- primaryExp
| | | | | | | | | `-- lVal
| | | | | | | | | |-- Ident: SHIFT_TABLE
| | | | | | | | | |-- L_BRACKET: [
| | | | | | | | | |-- exp
| | | | | | | | | | `-- addExp
| | | | | | | | | | `-- mulExp
| | | | | | | | | | `-- unaryExp
| | | | | | | | | | `-- primaryExp
| | | | | | | | | | `-- lVal
| | | | | | | | | | `-- Ident: y
| | | | | | | | | `-- R_BRACKET: ]
| | | | | | | | `-- Semi: ;
| | | | | | | `-- R_BRACE: }
| | | | | | `-- R_BRACE: }
| | | | | |-- Else: else
| | | | | `-- stmt
| | | | | `-- block
| | | | | |-- L_BRACE: {
| | | | | |-- blockItem
| | | | | | `-- stmt
| | | | | | |-- lVal
| | | | | | | `-- Ident: ans
| | | | | | |-- Assign: =
| | | | | | |-- exp
| | | | | | | `-- addExp
| | | | | | | `-- mulExp
| | | | | | | `-- unaryExp
| | | | | | | `-- primaryExp
| | | | | | | `-- lVal
| | | | | | | `-- Ident: x
| | | | | | `-- Semi: ;
| | | | | `-- R_BRACE: }
| | | | |-- blockItem
| | | | | `-- stmt
| | | | | |-- lVal
| | | | | | `-- Ident: pr
| | | | | |-- Assign: =
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: ans
| | | | | `-- Semi: ;
| | | | `-- R_BRACE: }
| | | |-- blockItem
| | | | `-- stmt
| | | | |-- lVal
| | | | | `-- Ident: ans
| | | | |-- Assign: =
| | | | |-- exp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: pres
| | | | `-- Semi: ;
| | | `-- R_BRACE: }
| | |-- blockItem
| | | `-- stmt
| | | |-- If: if
| | | |-- L_PAREN: (
| | | |-- cond
| | | | `-- lOrExp
| | | | `-- lAndExp
| | | | `-- eqExp
| | | | |-- eqExp
| | | | | `-- relExp
| | | | | `-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | |-- Ident: SHIFT_TABLE
| | | | | |-- L_BRACKET: [
| | | | | |-- exp
| | | | | | `-- addExp
| | | | | | `-- mulExp
| | | | | | `-- unaryExp
| | | | | | `-- primaryExp
| | | | | | `-- lVal
| | | | | | `-- Ident: cur
| | | | | `-- R_BRACKET: ]
| | | | |-- NeOp: !=
| | | | `-- relExp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- lVal
| | | | `-- Ident: ans
| | | |-- R_PAREN: )
| | | `-- stmt
| | | |-- Return: return
| | | |-- exp
| | | | `-- addExp
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- Semi: ;
| | |-- blockItem
| | | `-- stmt
| | | |-- lVal
| | | | `-- Ident: cur
| | | |-- Assign: =
| | | |-- exp
| | | | `-- addExp
| | | | |-- addExp
| | | | | `-- mulExp
| | | | | `-- unaryExp
| | | | | `-- primaryExp
| | | | | `-- lVal
| | | | | `-- Ident: cur
| | | | |-- AddOp: +
| | | | `-- mulExp
| | | | `-- unaryExp
| | | | `-- primaryExp
| | | | `-- number
| | | | `-- IntConst: 1
| | | `-- Semi: ;
| | `-- R_BRACE: }
| |-- blockItem
| | `-- stmt
| | |-- Return: return
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | `-- primaryExp
| | | `-- number
| | | `-- IntConst: 0
| | `-- Semi: ;
| `-- R_BRACE: }
|-- funcDef
| |-- funcType
| | `-- Int: int
| |-- Ident: main
| |-- L_PAREN: (
| |-- R_PAREN: )
| `-- block
| |-- L_BRACE: {
| |-- blockItem
| | `-- stmt
| | |-- Return: return
| | |-- exp
| | | `-- addExp
| | | `-- mulExp
| | | `-- unaryExp
| | | |-- Ident: long_func
| | | |-- L_PAREN: (
| | | `-- R_PAREN: )
| | `-- Semi: ;
| `-- R_BRACE: }
`-- EOF: <EOF>