diff --git a/include/sem/ConstEval.h b/include/sem/ConstEval.h new file mode 100644 index 0000000..50046e6 --- /dev/null +++ b/include/sem/ConstEval.h @@ -0,0 +1,80 @@ +// 编译期常量求值与常量初始化展开。 +#pragma once + +#include +#include +#include +#include + +#include "SysYParser.h" +#include "sem/SymbolTable.h" + +struct ConstValue { + SymbolDataType type = SymbolDataType::Unknown; + int64_t int_value = 0; + double float_value = 0.0; + bool bool_value = false; + + static ConstValue FromInt(int64_t value); + static ConstValue FromFloat(double value); + static ConstValue FromBool(bool value); + + bool IsScalar() const; + bool IsNumeric() const; + int64_t AsInt() const; + double AsFloat() const; + bool AsBool() const; +}; + +struct ConstArrayValue { + SymbolDataType elem_type = SymbolDataType::Unknown; + std::vector dims; + std::vector elements; +}; + +class ConstEvalContext { + public: + ConstEvalContext(); + + void EnterScope(); + void ExitScope(); + + bool DefineScalar(const std::string& name, ConstValue value); + bool DefineArray(const std::string& name, ConstArrayValue value); + + const ConstValue* LookupScalar(const std::string& name) const; + const ConstArrayValue* LookupArray(const std::string& name) const; + + private: + struct Binding { + bool is_array = false; + ConstValue scalar; + ConstArrayValue array; + }; + + using Scope = std::unordered_map; + + const Binding* LookupBinding(const std::string& name) const; + + std::vector scopes_; +}; + +class ConstEvaluator { + public: + ConstEvaluator(const SymbolTable& table, const ConstEvalContext& ctx); + + ConstValue EvaluateConstExp(SysYParser::ConstExpContext& ctx) const; + ConstValue EvaluateExp(SysYParser::ExpContext& ctx) const; + + // 数组维度必须是正整数。 + int64_t EvaluateArrayDim(SysYParser::ConstExpContext& ctx) const; + + // 展平 const 初始化列表,结果按行优先顺序存放。 + std::vector EvaluateConstInitList( + SysYParser::ConstInitValContext& init, SymbolDataType elem_type, + const std::vector& dims) const; + + private: + const SymbolTable& table_; + const ConstEvalContext& ctx_; +}; diff --git a/include/sem/Sema.h b/include/sem/Sema.h index 9ac057b..fc78911 100644 --- a/include/sem/Sema.h +++ b/include/sem/Sema.h @@ -1,30 +1,48 @@ // 基于语法树的语义检查与名称绑定。 #pragma once +#include #include #include "SysYParser.h" +#include "sem/SymbolTable.h" class SemanticContext { public: - void BindVarUse(SysYParser::VarContext* use, - SysYParser::VarDefContext* decl) { - var_uses_[use] = decl; + SymbolEntry* RegisterSymbol(SymbolEntry symbol) { + symbols_.push_back(std::move(symbol)); + return &symbols_.back(); } - SysYParser::VarDefContext* ResolveVarUse( - const SysYParser::VarContext* use) const { - auto it = var_uses_.find(use); - return it == var_uses_.end() ? nullptr : it->second; + void BindLValUse(SysYParser::LValContext* use, const SymbolEntry* symbol) { + lval_uses_[use] = symbol; } + const SymbolEntry* ResolveLValUse(const SysYParser::LValContext* use) const { + auto it = lval_uses_.find(use); + return it == lval_uses_.end() ? nullptr : it->second; + } + + void BindCallUse(SysYParser::UnaryExpContext* call, + const SymbolEntry* symbol) { + call_uses_[call] = symbol; + } + + const SymbolEntry* ResolveCallUse( + const SysYParser::UnaryExpContext* call) const { + auto it = call_uses_.find(call); + return it == call_uses_.end() ? nullptr : it->second; + } + + const std::list& GetSymbols() const { return symbols_; } + private: - std::unordered_map - var_uses_; + std::list symbols_; + std::unordered_map + lval_uses_; + std::unordered_map + call_uses_; }; -// 目前仅检查: -// - 变量先声明后使用 -// - 局部变量不允许重复定义 +// 基于 SysY.g4 规则进行语义分析,构建 IR 导向的符号绑定结果。 SemanticContext RunSema(SysYParser::CompUnitContext& comp_unit); diff --git a/include/sem/SymbolTable.h b/include/sem/SymbolTable.h index c9396dd..26d1ab8 100644 --- a/include/sem/SymbolTable.h +++ b/include/sem/SymbolTable.h @@ -1,17 +1,76 @@ -// 极简符号表:记录局部变量定义点。 +// IR 导向符号表:符号条目可直接挂接 IR 实体。 #pragma once +#include +#include #include #include +#include -#include "SysYParser.h" +namespace antlr4 { +class ParserRuleContext; +} // namespace antlr4 + +namespace ir { +class Type; +class Value; +class Function; +} // namespace ir + +enum class SymbolKind { + Variable, + Constant, + Function, + Parameter, +}; + +enum class SymbolDataType { + Unknown, + Void, + Int, + Float, + Bool, +}; + +struct SymbolEntry { + std::string name; + SymbolKind kind = SymbolKind::Variable; + SymbolDataType data_type = SymbolDataType::Unknown; + std::shared_ptr type; + ir::Value* ir_value = nullptr; + ir::Function* ir_function = nullptr; + bool is_const = false; + bool is_global = false; + bool has_initializer = false; + bool is_array = false; + std::vector array_dims; + bool has_constexpr_value = false; + int64_t const_int_value = 0; + double const_float_value = 0.0; + std::vector const_int_init; + std::vector const_float_init; + std::vector param_types; + std::vector param_is_array; + const antlr4::ParserRuleContext* decl_ctx = nullptr; +}; class SymbolTable { public: - void Add(const std::string& name, SysYParser::VarDefContext* decl); + SymbolTable(); + + void EnterScope(); + void ExitScope(); + + bool Insert(const SymbolEntry* symbol); + bool Contains(const std::string& name) const; - SysYParser::VarDefContext* Lookup(const std::string& name) const; + bool ContainsCurrentScope(const std::string& name) const; + + const SymbolEntry* Lookup(const std::string& name) const; + const SymbolEntry* LookupCurrentScope(const std::string& name) const; private: - std::unordered_map table_; + using Scope = std::unordered_map; + + std::vector scopes_; }; diff --git a/output/lab1/01_mm2.tree b/output/lab1/01_mm2.tree index 52b01c5..338ab29 100644 --- a/output/lab1/01_mm2.tree +++ b/output/lab1/01_mm2.tree @@ -1,1471 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: N -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 1024 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: mm -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: n -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: A -| | | |-- LBRACK: [ -| | | |-- RBRACK: ] -| | | |-- LBRACK: [ -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: N -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: B -| | | |-- LBRACK: [ -| | | |-- RBRACK: ] -| | | |-- LBRACK: [ -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: N -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: C -| | |-- LBRACK: [ -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | `-- Ident: i -| | |-- COMMA: , -| | |-- varDef -| | | `-- Ident: j -| | |-- COMMA: , -| | |-- varDef -| | | `-- Ident: k -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: i -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: j -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: C -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- RBRACK: ] -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: i -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: j -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: k -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: k -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: A -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: k -| | | | | | `-- RBRACK: ] -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- CONTINUE: continue -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- WHILE: while -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | `-- relExp -| | | | | |-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- LT: < -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: n -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: C -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: C -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: A -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: k -| | | | | | | `-- RBRACK: ] -| | | | | | |-- MUL: * -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: B -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: k -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: k -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: k -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: A -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: B -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: C -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| `-- SEMI: ; -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: n - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: i - | |-- COMMA: , - | |-- varDef - | | `-- Ident: j - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: j - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: A - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getint - | | | | |-- LPAREN: ( - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: j - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: B - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getint - | | | | |-- LPAREN: ( - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 5 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: mm - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: A - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: B - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: C - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: mm - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: A - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: C - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: B - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: ans - | | |-- ASSIGN: = - | | `-- initVal - | | `-- 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 - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: ans - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: ans - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: B - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putint - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: ans - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/02_mv3.tree b/output/lab1/02_mv3.tree index ecb6d99..338ab29 100644 --- a/output/lab1/02_mv3.tree +++ b/output/lab1/02_mv3.tree @@ -1,1054 +1 @@ -compUnit -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: x -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: N -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 2010 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: mv -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: n -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: A -| | | |-- LBRACK: [ -| | | |-- RBRACK: ] -| | | |-- LBRACK: [ -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: N -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: b -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: res -| | |-- LBRACK: [ -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | `-- Ident: x -| | |-- COMMA: , -| | |-- varDef -| | | `-- Ident: y -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: y -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: x -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 11 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | `-- Ident: i -| | |-- COMMA: , -| | |-- varDef -| | | `-- Ident: j -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: i -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: res -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: i -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: j -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: A -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | |-- RPAREN: ) -| | | | |-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | `-- Ident: x -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | |-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: x -| | | | | | | | |-- MUL: * -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | |-- Ident: b -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: i -| | | | | | | | `-- RBRACK: ] -| | | | | | | |-- ADD: + -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: b -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | `-- RBRACK: ] -| | | | | | `-- SEMI: ; -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | `-- Ident: y -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: y -| | | | | | | |-- SUB: - -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: x -| | | | | | `-- SEMI: ; -| | | | | `-- RBRACE: } -| | | | |-- ELSE: else -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: res -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: res -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: A -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | `-- RBRACK: ] -| | | | | | |-- MUL: * -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: b -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: A -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: B -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: C -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: N -| | `-- RBRACK: ] -| `-- SEMI: ; -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: n - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: i - | |-- COMMA: , - | |-- varDef - | | `-- Ident: j - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: A - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getint - | | | | |-- LPAREN: ( - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: B - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: getint - | | | |-- LPAREN: ( - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 50 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: mv - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: A - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: B - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: C - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: mv - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: A - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: C - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: B - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: n - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: C - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/03_sort1.tree b/output/lab1/03_sort1.tree index f5a869f..338ab29 100644 --- a/output/lab1/03_sort1.tree +++ b/output/lab1/03_sort1.tree @@ -1,1934 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: base -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 16 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: getMaxNum -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: n -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: arr -| | |-- LBRACK: [ -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: ret -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- IF: if -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: arr -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- GT: > -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: ret -| | | |-- RPAREN: ) -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: ret -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: arr -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: ret -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: getNumPos -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: num -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: pos -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: tmp -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: pos -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: num -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: num -| | | | |-- DIV: / -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: num -| | | |-- MOD: % -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: base -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: radixSort -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: bitround -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: a -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: l -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: r -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: head -| | | |-- LBRACK: [ -| | | |-- constExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | |-- RBRACK: ] -| | | |-- ASSIGN: = -| | | `-- initVal -| | | |-- LBRACE: { -| | | `-- RBRACE: } -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: tail -| | | |-- LBRACK: [ -| | | |-- constExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | |-- RBRACK: ] -| | | |-- ASSIGN: = -| | | `-- initVal -| | | |-- LBRACE: { -| | | `-- RBRACE: } -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: cnt -| | | |-- LBRACK: [ -| | | |-- constExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | |-- RBRACK: ] -| | | |-- ASSIGN: = -| | | `-- initVal -| | | |-- LBRACE: { -| | | `-- RBRACE: } -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | |-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | |-- eqExp -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: bitround -| | | | |-- EQ: == -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- unaryOp -| | | | | `-- SUB: - -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | |-- OR: || -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: l -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | |-- GE: >= -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: r -| | |-- RPAREN: ) -| | `-- stmt -| | |-- RETURN: return -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: i -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: l -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: r -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: cnt -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | |-- Ident: getNumPos -| | | | | | |-- LPAREN: ( -| | | | | | |-- funcRParams -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | |-- Ident: a -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: i -| | | | | | | | `-- RBRACK: ] -| | | | | | | |-- COMMA: , -| | | | | | | `-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: bitround -| | | | | | `-- RPAREN: ) -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: cnt -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | |-- Ident: getNumPos -| | | | | | | |-- LPAREN: ( -| | | | | | | |-- funcRParams -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | |-- Ident: a -| | | | | | | | | |-- LBRACK: [ -| | | | | | | | | |-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: i -| | | | | | | | | `-- RBRACK: ] -| | | | | | | | |-- COMMA: , -| | | | | | | | `-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: bitround -| | | | | | | `-- RPAREN: ) -| | | | | | `-- RBRACK: ] -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: head -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: l -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: tail -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: l -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: cnt -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: head -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: tail -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- SUB: - -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: tail -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: head -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: cnt -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- WHILE: while -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | `-- relExp -| | | | | |-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: head -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- LT: < -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: tail -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- decl -| | | | | `-- varDecl -| | | | | |-- bType -| | | | | | `-- INT: int -| | | | | |-- varDef -| | | | | | |-- Ident: v -| | | | | | |-- ASSIGN: = -| | | | | | `-- initVal -| | | | | | `-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: a -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: head -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | `-- RBRACK: ] -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- WHILE: while -| | | | | |-- LPAREN: ( -| | | | | |-- cond -| | | | | | `-- lOrExp -| | | | | | `-- lAndExp -| | | | | | `-- eqExp -| | | | | | |-- eqExp -| | | | | | | `-- relExp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | |-- Ident: getNumPos -| | | | | | | |-- LPAREN: ( -| | | | | | | |-- funcRParams -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: v -| | | | | | | | |-- COMMA: , -| | | | | | | | `-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: bitround -| | | | | | | `-- RPAREN: ) -| | | | | | |-- NE: != -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- RPAREN: ) -| | | | | `-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- decl -| | | | | | `-- varDecl -| | | | | | |-- bType -| | | | | | | `-- INT: int -| | | | | | |-- varDef -| | | | | | | |-- Ident: t -| | | | | | | |-- ASSIGN: = -| | | | | | | `-- initVal -| | | | | | | `-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: v -| | | | | | `-- SEMI: ; -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | `-- Ident: v -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: a -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | |-- Ident: head -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | |-- Ident: getNumPos -| | | | | | | | | |-- LPAREN: ( -| | | | | | | | | |-- funcRParams -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- lVal -| | | | | | | | | | | `-- Ident: t -| | | | | | | | | | |-- COMMA: , -| | | | | | | | | | `-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: bitround -| | | | | | | | | `-- RPAREN: ) -| | | | | | | | `-- RBRACK: ] -| | | | | | | `-- RBRACK: ] -| | | | | | `-- SEMI: ; -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | |-- Ident: a -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | |-- Ident: head -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | |-- Ident: getNumPos -| | | | | | | | | |-- LPAREN: ( -| | | | | | | | | |-- funcRParams -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- lVal -| | | | | | | | | | | `-- Ident: t -| | | | | | | | | | |-- COMMA: , -| | | | | | | | | | `-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: bitround -| | | | | | | | | `-- RPAREN: ) -| | | | | | | | `-- RBRACK: ] -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: t -| | | | | | `-- SEMI: ; -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | |-- Ident: head -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | |-- Ident: getNumPos -| | | | | | | | |-- LPAREN: ( -| | | | | | | | |-- funcRParams -| | | | | | | | | |-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: t -| | | | | | | | | |-- COMMA: , -| | | | | | | | | `-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: bitround -| | | | | | | | `-- RPAREN: ) -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | |-- Ident: head -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | |-- Ident: getNumPos -| | | | | | | | | |-- LPAREN: ( -| | | | | | | | | |-- funcRParams -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- lVal -| | | | | | | | | | | `-- Ident: t -| | | | | | | | | | |-- COMMA: , -| | | | | | | | | | `-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: bitround -| | | | | | | | | `-- RPAREN: ) -| | | | | | | | `-- RBRACK: ] -| | | | | | | |-- ADD: + -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | `-- SEMI: ; -| | | | | `-- RBRACE: } -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: a -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: head -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: v -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: head -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: head -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: i -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: l -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: head -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: l -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: tail -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: l -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: cnt -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: base -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | `-- relExp -| | | | | |-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- GT: > -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: head -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: tail -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- SUB: - -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | `-- RBRACK: ] -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: tail -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: head -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: cnt -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | |-- Ident: radixSort -| | | | | |-- LPAREN: ( -| | | | | |-- funcRParams -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: bitround -| | | | | | | |-- SUB: - -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | |-- COMMA: , -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: a -| | | | | | |-- COMMA: , -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: head -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- COMMA: , -| | | | | | `-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: tail -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | `-- SEMI: ; -| `-- RBRACE: } -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: a -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 30000010 -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: ans -| `-- SEMI: ; -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: n - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: radixSort - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 8 - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: ans - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: ans - | | | |-- ADD: + - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- MUL: * - | | | `-- unaryExp - | | | `-- primaryExp - | | | |-- LPAREN: ( - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: a - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | `-- RBRACK: ] - | | | | |-- MOD: % - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | |-- LPAREN: ( - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 2 - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | `-- RPAREN: ) - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: ans - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | |-- RPAREN: ) - | `-- stmt - | |-- lVal - | | `-- Ident: ans - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- SUB: - - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: ans - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putint - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: ans - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/05_arr_defn4.tree b/output/lab1/05_arr_defn4.tree index 3a3e971..338ab29 100644 --- a/output/lab1/05_arr_defn4.tree +++ b/output/lab1/05_arr_defn4.tree @@ -1,650 +1 @@ -compUnit -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- constDecl - | |-- CONST: const - | |-- bType - | | `-- INT: int - | |-- constDef - | | |-- Ident: a - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- constInitVal - | | |-- LBRACE: { - | | |-- constInitVal - | | | |-- LBRACE: { - | | | |-- constInitVal - | | | | `-- constExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- constInitVal - | | | | `-- constExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 2 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- constInitVal - | | | |-- LBRACE: { - | | | |-- constInitVal - | | | | `-- constExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 3 - | | | |-- COMMA: , - | | | |-- constInitVal - | | | | `-- constExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 4 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- constInitVal - | | | |-- LBRACE: { - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- constInitVal - | | | `-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 7 - | | `-- RBRACE: } - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- constDecl - | |-- CONST: const - | |-- bType - | | `-- INT: int - | |-- constDef - | | |-- Ident: N - | | |-- ASSIGN: = - | | `-- constInitVal - | | `-- constExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 3 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: b - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- initVal - | | |-- LBRACE: { - | | `-- RBRACE: } - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: c - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- initVal - | | |-- LBRACE: { - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 3 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 5 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 6 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 7 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 8 - | | `-- RBRACE: } - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: d - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: N - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- initVal - | | |-- LBRACE: { - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 3 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 5 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | |-- Ident: a - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 3 - | | | |-- RBRACK: ] - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- RBRACK: ] - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 8 - | | `-- RBRACE: } - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: e - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- initVal - | | |-- LBRACE: { - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: d - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 2 - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- RBRACK: ] - | | | |-- COMMA: , - | | | |-- initVal - | | | | |-- LBRACE: { - | | | | |-- initVal - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: c - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 2 - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 1 - | | | | | `-- RBRACK: ] - | | | | `-- RBRACE: } - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 3 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 4 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 5 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 6 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 7 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 8 - | | | `-- RBRACE: } - | | `-- RBRACE: } - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | |-- addExp - | | | |-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: e - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 3 - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 1 - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 0 - | | | | | `-- RBRACK: ] - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: e - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 0 - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 0 - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 0 - | | | | `-- RBRACK: ] - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | |-- Ident: e - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- RBRACK: ] - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- RBRACK: ] - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- RBRACK: ] - | | |-- ADD: + - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | |-- Ident: d - | | |-- LBRACK: [ - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 3 - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- RBRACK: ] - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/09_func_defn.tree b/output/lab1/09_func_defn.tree index e2ae5fa..338ab29 100644 --- a/output/lab1/09_func_defn.tree +++ b/output/lab1/09_func_defn.tree @@ -1,115 +1 @@ -compUnit -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: a -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: func -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: p -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: p -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | |-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: p -| | | |-- SUB: - -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: p -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: b - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: a - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 10 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: b - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: func - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: b - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/11_add2.tree b/output/lab1/11_add2.tree index 52d0997..338ab29 100644 --- a/output/lab1/11_add2.tree +++ b/output/lab1/11_add2.tree @@ -1,68 +1 @@ -compUnit -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: a - | |-- COMMA: , - | |-- varDef - | | `-- Ident: b - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: a - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 10 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: b - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- SUB: - - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | |-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | |-- ADD: + - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: b - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/13_sub2.tree b/output/lab1/13_sub2.tree index 4d5c7d6..338ab29 100644 --- a/output/lab1/13_sub2.tree +++ b/output/lab1/13_sub2.tree @@ -1,66 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: a -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 10 -| `-- SEMI: ; -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: b - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: b - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 2 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | |-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: b - | | |-- SUB: - - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: a - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/15_graph_coloring.tree b/output/lab1/15_graph_coloring.tree index fe699e5..338ab29 100644 --- a/output/lab1/15_graph_coloring.tree +++ b/output/lab1/15_graph_coloring.tree @@ -1,1336 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: V -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 4 -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: space -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 32 -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: LF -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 10 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: printSolution -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: color -| | |-- LBRACK: [ -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: V -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: putint -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: color -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: putch -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: space -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: LF -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: printMessage -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 78 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 111 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 116 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: space -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 101 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 120 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 105 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 115 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 116 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: isSafe -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: graph -| | | |-- LBRACK: [ -| | | |-- RBRACK: ] -| | | |-- LBRACK: [ -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: V -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: color -| | |-- LBRACK: [ -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: V -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: j -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: V -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | |-- lAndExp -| | | | | | `-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: graph -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- AND: && -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: color -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: color -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | |-- RETURN: return -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: graphColoring -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: graph -| | | |-- LBRACK: [ -| | | |-- RBRACK: ] -| | | |-- LBRACK: [ -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: V -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: m -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: i -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: color -| | |-- LBRACK: [ -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: V -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- IF: if -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: isSafe -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: graph -| | | | | |-- COMMA: , -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: color -| | | | `-- RPAREN: ) -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | |-- Ident: printSolution -| | | | | |-- LPAREN: ( -| | | | | |-- funcRParams -| | | | | | `-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: color -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- RETURN: return -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- RETURN: return -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | |-- LE: <= -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: m -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: color -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- IF: if -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: graphColoring -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: graph -| | | | | |-- COMMA: , -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: m -| | | | | |-- COMMA: , -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | |-- COMMA: , -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: color -| | | | `-- RPAREN: ) -| | | |-- RPAREN: ) -| | | `-- stmt -| | | |-- RETURN: return -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: color -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: graph - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: V - | | |-- RBRACK: ] - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: V - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- initVal - | | |-- LBRACE: { - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- RBRACE: } - | | |-- COMMA: , - | | |-- initVal - | | | |-- LBRACE: { - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | |-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- RBRACE: } - | | `-- RBRACE: } - | |-- COMMA: , - | |-- varDef - | | |-- Ident: m - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 3 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: color - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: V - | | `-- RBRACK: ] - | |-- COMMA: , - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: V - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: color - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- NOT: ! - | | `-- unaryExp - | | |-- Ident: graphColoring - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: graph - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: m - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: color - | | `-- RPAREN: ) - | |-- RPAREN: ) - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: printMessage - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/2025-MYO-20.tree b/output/lab1/2025-MYO-20.tree index c81c69a..338ab29 100644 --- a/output/lab1/2025-MYO-20.tree +++ b/output/lab1/2025-MYO-20.tree @@ -1,1842 +1 @@ -compUnit -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: A -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1024 -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1024 -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: B -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1024 -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1024 -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: C -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1024 -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1024 -| | `-- RBRACK: ] -| `-- SEMI: ; -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: T - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: R - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- DIV: / - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getarray - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: A - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | `-- RBRACK: ] - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- GE: >= - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- DIV: / - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getarray - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: B - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | `-- RBRACK: ] - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- GE: >= - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- DIV: / - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: j - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- WHILE: while - | | | |-- LPAREN: ( - | | | |-- cond - | | | | `-- lOrExp - | | | | `-- lAndExp - | | | | `-- eqExp - | | | | `-- relExp - | | | | |-- relExp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- LT: < - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- RPAREN: ) - | | | `-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | |-- Ident: A - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | `-- RBRACK: ] - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | |-- unaryOp - | | | | | | `-- SUB: - - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: j - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- DIV: / - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: j - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- WHILE: while - | | | |-- LPAREN: ( - | | | |-- cond - | | | | `-- lOrExp - | | | | `-- lAndExp - | | | | `-- eqExp - | | | | `-- relExp - | | | | |-- relExp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- LT: < - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- RPAREN: ) - | | | `-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | |-- Ident: B - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | `-- RBRACK: ] - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | |-- unaryOp - | | | | | | `-- SUB: - - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: j - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- decl - | | `-- varDecl - | | |-- bType - | | | `-- INT: int - | | |-- varDef - | | | |-- Ident: j - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: T - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: C - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | |-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | |-- Ident: A - | | | | | | |-- LBRACK: [ - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: i - | | | | | | |-- RBRACK: ] - | | | | | | |-- LBRACK: [ - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: j - | | | | | | `-- RBRACK: ] - | | | | | |-- MUL: * - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 2 - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: B - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | `-- RBRACK: ] - | | | | |-- MUL: * - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 3 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- decl - | | `-- varDecl - | | |-- bType - | | | `-- INT: int - | | |-- varDef - | | | |-- Ident: j - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: T - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: val - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: C - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: val - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | |-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: val - | | | | | |-- MUL: * - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: val - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 7 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: val - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: val - | | | | |-- DIV: / - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 3 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: C - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: val - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: T - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- decl - | | `-- varDecl - | | |-- bType - | | | `-- INT: int - | | |-- varDef - | | | |-- Ident: j - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: T - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: k - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: sum - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- WHILE: while - | | | |-- LPAREN: ( - | | | |-- cond - | | | | `-- lOrExp - | | | | `-- lAndExp - | | | | `-- eqExp - | | | | `-- relExp - | | | | |-- relExp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: k - | | | | |-- LT: < - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- RPAREN: ) - | | | `-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: sum - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: sum - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | |-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | |-- Ident: C - | | | | | | |-- LBRACK: [ - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: i - | | | | | | |-- RBRACK: ] - | | | | | | |-- LBRACK: [ - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: k - | | | | | | `-- RBRACK: ] - | | | | | |-- MUL: * - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: A - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: k - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | `-- RBRACK: ] - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: k - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: k - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: A - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: sum - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: total - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: r - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: r - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: R - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: T - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: j - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- WHILE: while - | | | |-- LPAREN: ( - | | | |-- cond - | | | | `-- lOrExp - | | | | `-- lAndExp - | | | | `-- eqExp - | | | | `-- relExp - | | | | |-- relExp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- LT: < - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: T - | | | |-- RPAREN: ) - | | | `-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: total - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: total - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | |-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | |-- Ident: A - | | | | | | |-- LBRACK: [ - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: i - | | | | | | |-- RBRACK: ] - | | | | | | |-- LBRACK: [ - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: j - | | | | | | `-- RBRACK: ] - | | | | | |-- MUL: * - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: A - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | `-- RBRACK: ] - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: j - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: i - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: r - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: r - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putint - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: total - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/22_matrix_multiply.tree b/output/lab1/22_matrix_multiply.tree index caf6cb2..338ab29 100644 --- a/output/lab1/22_matrix_multiply.tree +++ b/output/lab1/22_matrix_multiply.tree @@ -1,1000 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: MAX_SIZE -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 100 -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: a -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: MAX_SIZE -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: MAX_SIZE -| | `-- RBRACK: ] -| |-- COMMA: , -| |-- varDef -| | |-- Ident: b -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: MAX_SIZE -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: MAX_SIZE -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: res -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: MAX_SIZE -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: MAX_SIZE -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: n1 -| |-- COMMA: , -| |-- varDef -| | `-- Ident: m1 -| |-- COMMA: , -| |-- varDef -| | `-- Ident: n2 -| |-- COMMA: , -| |-- varDef -| | `-- Ident: m2 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: matrix_multiply -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: m1 -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: j -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n2 -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- decl -| | | | `-- varDecl -| | | | |-- bType -| | | | | `-- INT: int -| | | | |-- varDef -| | | | | |-- Ident: k -| | | | | |-- ASSIGN: = -| | | | | `-- initVal -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 0 -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- WHILE: while -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | `-- relExp -| | | | | |-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: k -| | | | | |-- LT: < -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: n1 -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: res -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: res -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: a -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: k -| | | | | | | `-- RBRACK: ] -| | | | | | |-- MUL: * -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: b -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: k -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | `-- Ident: k -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: k -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: i - | |-- COMMA: , - | |-- varDef - | | `-- Ident: j - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: m1 - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: n1 - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: m1 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n1 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: a - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getint - | | | | |-- LPAREN: ( - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: m2 - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: n2 - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: m2 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n2 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: b - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- RBRACK: ] - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: getint - | | | | |-- LPAREN: ( - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: matrix_multiply - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: m1 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: j - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n2 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: putint - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: res - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | |-- RBRACK: ] - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: j - | | | | | `-- RBRACK: ] - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: putch - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 32 - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putch - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 10 - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/25_scope3.tree b/output/lab1/25_scope3.tree index e1db525..338ab29 100644 --- a/output/lab1/25_scope3.tree +++ b/output/lab1/25_scope3.tree @@ -1,698 +1 @@ -compUnit -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 97 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: a - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1 - | |-- COMMA: , - | |-- varDef - | | |-- Ident: putch - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: a - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | `-- SEMI: ; - | |-- blockItem - | | `-- decl - | | `-- varDecl - | | |-- bType - | | | `-- INT: int - | | |-- varDef - | | | |-- Ident: b - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 3 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: b - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: b - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: putch - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: putch - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: b - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: b - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: b - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 5 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- decl - | | | `-- varDecl - | | | |-- bType - | | | | `-- INT: int - | | | |-- varDef - | | | | |-- Ident: main - | | | | |-- ASSIGN: = - | | | | `-- initVal - | | | | `-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: b - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 6 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: a - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: a - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: main - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: putch - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | |-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: putch - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: a - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: b - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: main - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: b - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: b - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: a - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- decl - | | | | `-- varDecl - | | | | |-- bType - | | | | | `-- INT: int - | | | | |-- varDef - | | | | | |-- Ident: a - | | | | | |-- ASSIGN: = - | | | | | `-- initVal - | | | | | `-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: main - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 7 - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: a - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: a - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 8 - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: putch - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | |-- addExp - | | | | | | | |-- addExp - | | | | | | | | `-- mulExp - | | | | | | | | `-- unaryExp - | | | | | | | | `-- primaryExp - | | | | | | | | `-- lVal - | | | | | | | | `-- Ident: putch - | | | | | | | |-- ADD: + - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: a - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: b - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: main - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | `-- block - | | | | |-- LBRACE: { - | | | | |-- blockItem - | | | | | `-- stmt - | | | | | |-- lVal - | | | | | | `-- Ident: b - | | | | | |-- ASSIGN: = - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: b - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: a - | | | | | `-- SEMI: ; - | | | | |-- blockItem - | | | | | `-- decl - | | | | | `-- varDecl - | | | | | |-- bType - | | | | | | `-- INT: int - | | | | | |-- varDef - | | | | | | |-- Ident: b - | | | | | | |-- ASSIGN: = - | | | | | | `-- initVal - | | | | | | `-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: main - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 9 - | | | | | `-- SEMI: ; - | | | | |-- blockItem - | | | | | `-- stmt - | | | | | |-- lVal - | | | | | | `-- Ident: a - | | | | | |-- ASSIGN: = - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: a - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 10 - | | | | | `-- SEMI: ; - | | | | |-- blockItem - | | | | | `-- decl - | | | | | `-- constDecl - | | | | | |-- CONST: const - | | | | | |-- bType - | | | | | | `-- INT: int - | | | | | |-- constDef - | | | | | | |-- Ident: a - | | | | | | |-- ASSIGN: = - | | | | | | `-- constInitVal - | | | | | | `-- constExp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 11 - | | | | | `-- SEMI: ; - | | | | |-- blockItem - | | | | | `-- stmt - | | | | | |-- lVal - | | | | | | `-- Ident: b - | | | | | |-- ASSIGN: = - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: b - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 12 - | | | | | `-- SEMI: ; - | | | | |-- blockItem - | | | | | `-- stmt - | | | | | |-- lVal - | | | | | | `-- Ident: putch - | | | | | |-- ASSIGN: = - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | |-- addExp - | | | | | | | | |-- addExp - | | | | | | | | | `-- mulExp - | | | | | | | | | `-- unaryExp - | | | | | | | | | `-- primaryExp - | | | | | | | | | `-- lVal - | | | | | | | | | `-- Ident: putch - | | | | | | | | |-- ADD: + - | | | | | | | | `-- mulExp - | | | | | | | | `-- unaryExp - | | | | | | | | `-- primaryExp - | | | | | | | | `-- lVal - | | | | | | | | `-- Ident: a - | | | | | | | |-- ADD: + - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: b - | | | | | | |-- ADD: + - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: main - | | | | | `-- SEMI: ; - | | | | |-- blockItem - | | | | | `-- stmt - | | | | | `-- block - | | | | | |-- LBRACE: { - | | | | | |-- blockItem - | | | | | | `-- stmt - | | | | | | |-- lVal - | | | | | | | `-- Ident: main - | | | | | | |-- ASSIGN: = - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | |-- addExp - | | | | | | | | `-- mulExp - | | | | | | | | `-- unaryExp - | | | | | | | | `-- primaryExp - | | | | | | | | `-- lVal - | | | | | | | | `-- Ident: main - | | | | | | | |-- ADD: + - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: b - | | | | | | `-- SEMI: ; - | | | | | |-- blockItem - | | | | | | `-- decl - | | | | | | `-- varDecl - | | | | | | |-- bType - | | | | | | | `-- INT: int - | | | | | | |-- varDef - | | | | | | | |-- Ident: main - | | | | | | | |-- ASSIGN: = - | | | | | | | `-- initVal - | | | | | | | `-- exp - | | | | | | | `-- addExp - | | | | | | | |-- addExp - | | | | | | | | `-- mulExp - | | | | | | | | `-- unaryExp - | | | | | | | | `-- primaryExp - | | | | | | | | `-- lVal - | | | | | | | | `-- Ident: b - | | | | | | | |-- ADD: + - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- number - | | | | | | | `-- IntConst: 13 - | | | | | | `-- SEMI: ; - | | | | | |-- blockItem - | | | | | | `-- stmt - | | | | | | |-- lVal - | | | | | | | `-- Ident: main - | | | | | | |-- ASSIGN: = - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | |-- addExp - | | | | | | | | `-- mulExp - | | | | | | | | `-- unaryExp - | | | | | | | | `-- primaryExp - | | | | | | | | `-- lVal - | | | | | | | | `-- Ident: main - | | | | | | | |-- ADD: + - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: a - | | | | | | `-- SEMI: ; - | | | | | |-- blockItem - | | | | | | `-- stmt - | | | | | | |-- lVal - | | | | | | | `-- Ident: putch - | | | | | | |-- ASSIGN: = - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | |-- addExp - | | | | | | | | |-- addExp - | | | | | | | | | |-- addExp - | | | | | | | | | | `-- mulExp - | | | | | | | | | | `-- unaryExp - | | | | | | | | | | `-- primaryExp - | | | | | | | | | | `-- lVal - | | | | | | | | | | `-- Ident: putch - | | | | | | | | | |-- ADD: + - | | | | | | | | | `-- mulExp - | | | | | | | | | `-- unaryExp - | | | | | | | | | `-- primaryExp - | | | | | | | | | `-- lVal - | | | | | | | | | `-- Ident: a - | | | | | | | | |-- ADD: + - | | | | | | | | `-- mulExp - | | | | | | | | `-- unaryExp - | | | | | | | | `-- primaryExp - | | | | | | | | `-- lVal - | | | | | | | | `-- Ident: b - | | | | | | | |-- ADD: + - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: main - | | | | | | `-- SEMI: ; - | | | | | `-- RBRACE: } - | | | | |-- blockItem - | | | | | `-- stmt - | | | | | |-- lVal - | | | | | | `-- Ident: putch - | | | | | |-- ASSIGN: = - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: putch - | | | | | | |-- SUB: - - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: main - | | | | | `-- SEMI: ; - | | | | `-- RBRACE: } - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: putch - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: putch - | | | | | |-- SUB: - - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: b - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: putch - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: putch - | | | | |-- SUB: - - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | `-- SEMI: ; - | | `-- RBRACE: } - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | |-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: putch - | | |-- MOD: % - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 77 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/29_break.tree b/output/lab1/29_break.tree index 1c9f026..338ab29 100644 --- a/output/lab1/29_break.tree +++ b/output/lab1/29_break.tree @@ -1,164 +1 @@ -compUnit -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: i - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: sum - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: sum - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 100 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | |-- eqExp - | | | | `-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- EQ: == - | | | `-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 50 - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- BREAK: break - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: sum - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: sum - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: sum - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/36_op_priority2.tree b/output/lab1/36_op_priority2.tree index 27132db..338ab29 100644 --- a/output/lab1/36_op_priority2.tree +++ b/output/lab1/36_op_priority2.tree @@ -1,124 +1 @@ -compUnit -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: a - | |-- COMMA: , - | |-- varDef - | | `-- Ident: b - | |-- COMMA: , - | |-- varDef - | | `-- Ident: c - | |-- COMMA: , - | |-- varDef - | | `-- Ident: d - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: a - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 10 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: b - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 4 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: c - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 2 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: d - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 2 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | |-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | |-- LPAREN: ( - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: c - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | `-- RPAREN: ) - | | |-- MUL: * - | | `-- unaryExp - | | `-- primaryExp - | | |-- LPAREN: ( - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: b - | | | |-- SUB: - - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: d - | | `-- RPAREN: ) - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/95_float.tree b/output/lab1/95_float.tree index f1f949e..338ab29 100644 --- a/output/lab1/95_float.tree +++ b/output/lab1/95_float.tree @@ -1,1492 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- FLOAT: float -| |-- constDef -| | |-- Ident: RADIUS -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 5.5 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: PI -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 03.141592653589793 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: EPS -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 1e-6 -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- FLOAT: float -| |-- constDef -| | |-- Ident: PI_HEX -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 0x1.921fb6p+1 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: HEX2 -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 0x.AP-3 -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- FLOAT: float -| |-- constDef -| | |-- Ident: FACT -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | |-- unaryOp -| | | `-- SUB: - -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: .33E+5 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: EVAL1 -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | |-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: PI -| | | |-- MUL: * -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: RADIUS -| | |-- MUL: * -| | `-- unaryExp -| | `-- primaryExp -| | `-- lVal -| | `-- Ident: RADIUS -| |-- COMMA: , -| |-- constDef -| | |-- Ident: EVAL2 -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | |-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 2 -| | | |-- MUL: * -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: PI_HEX -| | |-- MUL: * -| | `-- unaryExp -| | `-- primaryExp -| | `-- lVal -| | `-- Ident: RADIUS -| |-- COMMA: , -| |-- constDef -| | |-- Ident: EVAL3 -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | |-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: PI -| | | |-- MUL: * -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 2 -| | |-- MUL: * -| | `-- unaryExp -| | `-- primaryExp -| | `-- lVal -| | `-- Ident: RADIUS -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- FLOAT: float -| |-- constDef -| | |-- Ident: CONV1 -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 233 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: CONV2 -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 0xfff -| `-- SEMI: ; -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: MAX -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 1e9 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: TWO -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 2.9 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: THREE -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- FloatConst: 3.2 -| |-- COMMA: , -| |-- constDef -| | |-- Ident: FIVE -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | |-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: TWO -| | |-- ADD: + -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- lVal -| | `-- Ident: THREE -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- FLOAT: float -| |-- Ident: float_abs -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- FLOAT: float -| | `-- Ident: x -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: x -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | |-- RPAREN: ) -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- unaryOp -| | | | `-- SUB: - -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: x -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: x -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- FLOAT: float -| |-- Ident: circle_area -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: radius -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | |-- LPAREN: ( -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: PI -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: radius -| | | | | | |-- MUL: * -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: radius -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | |-- LPAREN: ( -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: radius -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: radius -| | | | | | `-- RPAREN: ) -| | | | | |-- MUL: * -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: PI -| | | | `-- RPAREN: ) -| | | |-- DIV: / -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 2 -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: float_eq -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | `-- Ident: a -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- FLOAT: float -| | `-- Ident: b -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: float_abs -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | `-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: a -| | | | | |-- SUB: - -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: b -| | | | `-- RPAREN: ) -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: EPS -| | |-- RPAREN: ) -| | |-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- RETURN: return -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | |-- MUL: * -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- FloatConst: 2. -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- ELSE: else -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- RETURN: return -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: error -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 101 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 114 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 114 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 111 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 114 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 10 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: ok -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 111 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 107 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: putch -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 10 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: assert -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: cond -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- unaryOp -| | | | `-- NOT: ! -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: cond -| | |-- RPAREN: ) -| | |-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | |-- Ident: error -| | | | | |-- LPAREN: ( -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- ELSE: else -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: ok -| | | | |-- LPAREN: ( -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: assert_not -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: cond -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: cond -| | |-- RPAREN: ) -| | |-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | |-- Ident: error -| | | | | |-- LPAREN: ( -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- ELSE: else -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: ok -| | | | |-- LPAREN: ( -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: assert_not - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: float_eq - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: HEX2 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: FACT - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: assert_not - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: float_eq - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: EVAL1 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: EVAL2 - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: assert - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: float_eq - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: EVAL2 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: EVAL3 - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: assert - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: float_eq - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | |-- Ident: circle_area - | | | | | |-- LPAREN: ( - | | | | | |-- funcRParams - | | | | | | `-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: RADIUS - | | | | | `-- RPAREN: ) - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: circle_area - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: FIVE - | | | | `-- RPAREN: ) - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: assert_not - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: float_eq - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: CONV1 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: CONV2 - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 1.5 - | |-- RPAREN: ) - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: ok - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- NOT: ! - | | `-- unaryExp - | | |-- unaryOp - | | | `-- NOT: ! - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 3.3 - | |-- RPAREN: ) - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: ok - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | |-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- FloatConst: .0 - | | |-- AND: && - | | `-- eqExp - | | `-- relExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 3 - | |-- RPAREN: ) - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: error - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | |-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 0 - | | |-- OR: || - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 0.3 - | |-- RPAREN: ) - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: ok - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1 - | |-- COMMA: , - | |-- varDef - | | |-- Ident: p - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: arr - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | |-- RBRACK: ] - | | |-- ASSIGN: = - | | `-- initVal - | | |-- LBRACE: { - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- FloatConst: 1. - | | |-- COMMA: , - | | |-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | `-- RBRACE: } - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: len - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getfarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: arr - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: MAX - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- decl - | | `-- varDecl - | | |-- bType - | | | `-- FLOAT: float - | | |-- varDef - | | | |-- Ident: input - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: getfloat - | | | |-- LPAREN: ( - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- decl - | | `-- varDecl - | | |-- bType - | | | `-- FLOAT: float - | | |-- varDef - | | | |-- Ident: area - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: PI - | | | | |-- MUL: * - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: input - | | | |-- MUL: * - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: input - | | |-- COMMA: , - | | |-- varDef - | | | |-- Ident: area_trunc - | | | |-- ASSIGN: = - | | | `-- initVal - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: circle_area - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: input - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: arr - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: p - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: arr - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: p - | | | | `-- RBRACK: ] - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: input - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putfloat - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: area - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putch - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 32 - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putint - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: area_trunc - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putch - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 10 - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- MUL: * - | | | `-- unaryExp - | | | |-- unaryOp - | | | | `-- SUB: - - | | | `-- unaryExp - | | | |-- unaryOp - | | | | `-- SUB: - - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- FloatConst: 1e1 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: p - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: p - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putfarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: len - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: arr - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/fft0.tree b/output/lab1/fft0.tree index 0a7aaf4..338ab29 100644 --- a/output/lab1/fft0.tree +++ b/output/lab1/fft0.tree @@ -1,2172 +1 @@ -compUnit -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: mod -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 998244353 -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: d -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: multiply -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: a -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: b -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: b -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | |-- RPAREN: ) -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: b -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | |-- RPAREN: ) -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: a -| | | |-- MOD: % -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: mod -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: cur -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: multiply -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: a -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: b -| | | | |-- DIV: / -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 2 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: cur -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | |-- LPAREN: ( -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: cur -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: cur -| | | | `-- RPAREN: ) -| | | |-- MOD: % -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: mod -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: b -| | | | |-- MOD: % -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 2 -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | |-- RPAREN: ) -| | |-- stmt -| | | |-- RETURN: return -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | |-- LPAREN: ( -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: cur -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: a -| | | | | `-- RPAREN: ) -| | | | |-- MOD: % -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: mod -| | | `-- SEMI: ; -| | |-- ELSE: else -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: cur -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: power -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: a -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: b -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: b -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | |-- RPAREN: ) -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: cur -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: power -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: a -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: b -| | | | |-- DIV: / -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 2 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: cur -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: multiply -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: cur -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: cur -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: b -| | | | |-- MOD: % -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 2 -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | |-- RPAREN: ) -| | |-- stmt -| | | |-- RETURN: return -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: multiply -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: cur -| | | | | |-- COMMA: , -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: a -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | |-- ELSE: else -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: cur -| | `-- SEMI: ; -| `-- RBRACE: } -|-- decl -| `-- constDecl -| |-- CONST: const -| |-- bType -| | `-- INT: int -| |-- constDef -| | |-- Ident: maxlen -| | |-- ASSIGN: = -| | `-- constInitVal -| | `-- constExp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 2097152 -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: temp -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: maxlen -| | `-- RBRACK: ] -| |-- COMMA: , -| |-- varDef -| | |-- Ident: a -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: maxlen -| | `-- RBRACK: ] -| |-- COMMA: , -| |-- varDef -| | |-- Ident: b -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: maxlen -| | `-- RBRACK: ] -| |-- COMMA: , -| |-- varDef -| | |-- Ident: c -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: maxlen -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: memmove -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: dst -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: dst_pos -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: src -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: len -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: len -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: dst -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: dst_pos -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: src -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: i -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: fft -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: arr -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: begin_pos -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: n -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: w -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- IF: if -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | |-- eqExp -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- EQ: == -| | | `-- relExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | |-- RPAREN: ) -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- IF: if -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | |-- eqExp -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- MOD: % -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | |-- EQ: == -| | | | `-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | |-- RPAREN: ) -| | | |-- stmt -| | | | |-- lVal -| | | | | |-- Ident: temp -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- DIV: / -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 2 -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: arr -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: begin_pos -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- ELSE: else -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: temp -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: n -| | | | | | |-- DIV: / -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 2 -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: arr -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: begin_pos -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: memmove -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: arr -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: begin_pos -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: temp -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: fft -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: arr -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: begin_pos -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: n -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: multiply -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: w -| | | | | |-- COMMA: , -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: w -| | | | `-- RPAREN: ) -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: fft -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: arr -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: begin_pos -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: n -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: n -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: multiply -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: w -| | | | | |-- COMMA: , -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: w -| | | | `-- RPAREN: ) -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: i -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: wn -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- DIV: / -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 2 -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: x -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: arr -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: begin_pos -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: y -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: arr -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: begin_pos -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: n -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: arr -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: begin_pos -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | |-- LPAREN: ( -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: x -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | |-- Ident: multiply -| | | | | | |-- LPAREN: ( -| | | | | | |-- funcRParams -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: wn -| | | | | | | |-- COMMA: , -| | | | | | | `-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: y -| | | | | | `-- RPAREN: ) -| | | | | `-- RPAREN: ) -| | | | |-- MOD: % -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: mod -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: arr -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: begin_pos -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: n -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | |-- LPAREN: ( -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: x -| | | | | | | |-- SUB: - -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | |-- Ident: multiply -| | | | | | | |-- LPAREN: ( -| | | | | | | |-- funcRParams -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: wn -| | | | | | | | |-- COMMA: , -| | | | | | | | `-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: y -| | | | | | | `-- RPAREN: ) -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: mod -| | | | | `-- RPAREN: ) -| | | | |-- MOD: % -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: mod -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: wn -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: multiply -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: wn -| | | | | |-- COMMA: , -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: w -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: n - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: m - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: b - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: d - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: d - | | |-- LT: < - | | `-- addExp - | | |-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: n - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: m - | | |-- SUB: - - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: d - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | |-- MUL: * - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: fft - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: power - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 3 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | |-- LPAREN: ( - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: mod - | | | | | | |-- SUB: - - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 1 - | | | | | `-- RPAREN: ) - | | | | |-- DIV: / - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: fft - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: b - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: power - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 3 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | |-- LPAREN: ( - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: mod - | | | | | | |-- SUB: - - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 1 - | | | | | `-- RPAREN: ) - | | | | |-- DIV: / - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: d - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: a - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: multiply - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: a - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | `-- RBRACK: ] - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: b - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | `-- RBRACK: ] - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: fft - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: a - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | |-- COMMA: , - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: power - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 3 - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: mod - | | | | | |-- SUB: - - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | |-- SUB: - - | | | | `-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | |-- LPAREN: ( - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | |-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: mod - | | | | | | |-- SUB: - - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- number - | | | | | | `-- IntConst: 1 - | | | | | `-- RPAREN: ) - | | | | |-- DIV: / - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: d - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: d - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: a - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: multiply - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | |-- Ident: a - | | | | | |-- LBRACK: [ - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: i - | | | | | `-- RBRACK: ] - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: power - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: d - | | | | | |-- COMMA: , - | | | | | `-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: mod - | | | | | |-- SUB: - - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 2 - | | | | `-- RPAREN: ) - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: n - | | | | | |-- ADD: + - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: m - | | | | |-- SUB: - - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | |-- COMMA: , - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/gameoflife-oscillator.tree b/output/lab1/gameoflife-oscillator.tree index 7cd9cd1..338ab29 100644 --- a/output/lab1/gameoflife-oscillator.tree +++ b/output/lab1/gameoflife-oscillator.tree @@ -1,1809 +1 @@ -compUnit -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: sheet1 -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 500 -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 500 -| | |-- RBRACK: ] -| | |-- ASSIGN: = -| | `-- initVal -| | |-- LBRACE: { -| | `-- RBRACE: } -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: sheet2 -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 500 -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 500 -| | |-- RBRACK: ] -| | |-- ASSIGN: = -| | `-- initVal -| | |-- LBRACE: { -| | `-- RBRACE: } -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: active -| | |-- ASSIGN: = -| | `-- initVal -| | `-- exp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 1 -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: width -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: height -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | `-- Ident: steps -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: read_map -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: width -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: getint -| | | |-- LPAREN: ( -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: height -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: getint -| | | |-- LPAREN: ( -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- lVal -| | | `-- Ident: steps -| | |-- ASSIGN: = -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: getint -| | | |-- LPAREN: ( -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: getch -| | | |-- LPAREN: ( -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | |-- LE: <= -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: height -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LE: <= -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: width -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- decl -| | | | `-- varDecl -| | | | |-- bType -| | | | | `-- INT: int -| | | | |-- varDef -| | | | | |-- Ident: get -| | | | | |-- ASSIGN: = -| | | | | `-- initVal -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | |-- Ident: getch -| | | | | |-- LPAREN: ( -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: get -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 35 -| | | | |-- RPAREN: ) -| | | | |-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | |-- Ident: sheet1 -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | `-- SEMI: ; -| | | | | `-- RBRACE: } -| | | | |-- ELSE: else -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: sheet1 -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 0 -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: getch -| | | | |-- LPAREN: ( -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: put_map -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | |-- LE: <= -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: height -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LE: <= -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: width -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: sheet1 -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | |-- RPAREN: ) -| | | | |-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | |-- Ident: putch -| | | | | | | |-- LPAREN: ( -| | | | | | | |-- funcRParams -| | | | | | | | `-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 35 -| | | | | | | `-- RPAREN: ) -| | | | | | `-- SEMI: ; -| | | | | `-- RBRACE: } -| | | | |-- ELSE: else -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | |-- Ident: putch -| | | | | | |-- LPAREN: ( -| | | | | | |-- funcRParams -| | | | | | | `-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 46 -| | | | | | `-- RPAREN: ) -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | |-- Ident: putch -| | | | |-- LPAREN: ( -| | | | |-- funcRParams -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 10 -| | | | `-- RPAREN: ) -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: swap12 -| |-- LPAREN: ( -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | |-- LE: <= -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: height -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LE: <= -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: width -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: sheet1 -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- RBRACK: ] -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: sheet2 -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- RBRACK: ] -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: step -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: source -| | | |-- LBRACK: [ -| | | |-- RBRACK: ] -| | | |-- LBRACK: [ -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 500 -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | |-- Ident: target -| | |-- LBRACK: [ -| | |-- RBRACK: ] -| | |-- LBRACK: [ -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 500 -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | |-- LE: <= -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: height -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- LE: <= -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: width -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- decl -| | | | `-- varDecl -| | | | |-- bType -| | | | | `-- INT: int -| | | | |-- varDef -| | | | | |-- Ident: alive_count -| | | | | |-- ASSIGN: = -| | | | | `-- initVal -| | | | | `-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | |-- addExp -| | | | | | | |-- addExp -| | | | | | | | |-- addExp -| | | | | | | | | |-- addExp -| | | | | | | | | | |-- addExp -| | | | | | | | | | | |-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | |-- Ident: source -| | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | |-- addExp -| | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | `-- Ident: j -| | | | | | | | | | | | | |-- SUB: - -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | `-- IntConst: 1 -| | | | | | | | | | | | |-- RBRACK: ] -| | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | |-- addExp -| | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | |-- SUB: - -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | `-- IntConst: 1 -| | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | |-- ADD: + -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- lVal -| | | | | | | | | | | |-- Ident: source -| | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | |-- exp -| | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | |-- addExp -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | `-- Ident: j -| | | | | | | | | | | | |-- SUB: - -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- number -| | | | | | | | | | | | `-- IntConst: 1 -| | | | | | | | | | | |-- RBRACK: ] -| | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | |-- exp -| | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | |-- ADD: + -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | |-- Ident: source -| | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | |-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | `-- Ident: j -| | | | | | | | | | | |-- SUB: - -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- number -| | | | | | | | | | | `-- IntConst: 1 -| | | | | | | | | | |-- RBRACK: ] -| | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | |-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | |-- ADD: + -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- number -| | | | | | | | | | | `-- IntConst: 1 -| | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | |-- ADD: + -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | |-- Ident: source -| | | | | | | | | |-- LBRACK: [ -| | | | | | | | | |-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: j -| | | | | | | | | |-- RBRACK: ] -| | | | | | | | | |-- LBRACK: [ -| | | | | | | | | |-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | |-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- lVal -| | | | | | | | | | | `-- Ident: i -| | | | | | | | | | |-- SUB: - -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- number -| | | | | | | | | | `-- IntConst: 1 -| | | | | | | | | `-- RBRACK: ] -| | | | | | | | |-- ADD: + -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | |-- Ident: source -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: j -| | | | | | | | |-- RBRACK: ] -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | |-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: i -| | | | | | | | | |-- ADD: + -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- number -| | | | | | | | | `-- IntConst: 1 -| | | | | | | | `-- RBRACK: ] -| | | | | | | |-- ADD: + -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: source -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | |-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: j -| | | | | | | | |-- ADD: + -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 1 -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | |-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: i -| | | | | | | | |-- SUB: - -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 1 -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: source -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | |-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | |-- ADD: + -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: source -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | |-- RBRACK: ] -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | |-- lAndExp -| | | | | | `-- eqExp -| | | | | | |-- eqExp -| | | | | | | `-- relExp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | |-- Ident: source -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- EQ: == -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | |-- AND: && -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: alive_count -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | |-- RPAREN: ) -| | | | |-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | |-- Ident: target -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | `-- SEMI: ; -| | | | | `-- RBRACE: } -| | | | |-- ELSE: else -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | |-- eqExp -| | | | | | `-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: alive_count -| | | | | |-- EQ: == -| | | | | `-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 3 -| | | | |-- RPAREN: ) -| | | | |-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | |-- Ident: target -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | |-- RBRACK: ] -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 1 -| | | | | | `-- SEMI: ; -| | | | | `-- RBRACE: } -| | | | |-- ELSE: else -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: target -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- RBRACK: ] -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 0 -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: i -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: read_map - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: steps - | | |-- GT: > - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | |-- eqExp - | | | | `-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: active - | | | |-- EQ: == - | | | `-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | |-- RPAREN: ) - | | |-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | |-- Ident: step - | | | | | |-- LPAREN: ( - | | | | | |-- funcRParams - | | | | | | |-- exp - | | | | | | | `-- addExp - | | | | | | | `-- mulExp - | | | | | | | `-- unaryExp - | | | | | | | `-- primaryExp - | | | | | | | `-- lVal - | | | | | | | `-- Ident: sheet1 - | | | | | | |-- COMMA: , - | | | | | | `-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: sheet2 - | | | | | `-- RPAREN: ) - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: active - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 2 - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | |-- ELSE: else - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: step - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: sheet2 - | | | | | |-- COMMA: , - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: sheet1 - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: active - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: steps - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: steps - | | | |-- SUB: - - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | |-- eqExp - | | | `-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: active - | | |-- EQ: == - | | `-- relExp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 2 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: swap12 - | | | |-- LPAREN: ( - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: put_map - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/if-combine3.tree b/output/lab1/if-combine3.tree index 1365686..338ab29 100644 --- a/output/lab1/if-combine3.tree +++ b/output/lab1/if-combine3.tree @@ -1,5393 +1 @@ -compUnit -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: func -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: n -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: sum -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 200 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: s -| | | |-- LBRACK: [ -| | | |-- constExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 100 -| | | `-- RBRACK: ] -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: m -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: m -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 100 -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: s -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: m -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: m -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: m -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: j -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- IF: if -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- GT: > -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: s -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | `-- relExp -| | | | | |-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- GT: > -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 2 -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | |-- Ident: s -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 2 -| | | | | | `-- RBRACK: ] -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 2 -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- IF: if -| | | | | |-- LPAREN: ( -| | | | | |-- cond -| | | | | | `-- lOrExp -| | | | | | `-- lAndExp -| | | | | | `-- eqExp -| | | | | | `-- relExp -| | | | | | |-- relExp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- GT: > -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 3 -| | | | | |-- RPAREN: ) -| | | | | `-- stmt -| | | | | `-- block -| | | | | |-- LBRACE: { -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- lVal -| | | | | | | |-- Ident: s -| | | | | | | |-- LBRACK: [ -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 3 -| | | | | | | `-- RBRACK: ] -| | | | | | |-- ASSIGN: = -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 3 -| | | | | | `-- SEMI: ; -| | | | | |-- blockItem -| | | | | | `-- stmt -| | | | | | |-- IF: if -| | | | | | |-- LPAREN: ( -| | | | | | |-- cond -| | | | | | | `-- lOrExp -| | | | | | | `-- lAndExp -| | | | | | | `-- eqExp -| | | | | | | `-- relExp -| | | | | | | |-- relExp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- GT: > -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- number -| | | | | | | `-- IntConst: 4 -| | | | | | |-- RPAREN: ) -| | | | | | `-- stmt -| | | | | | `-- block -| | | | | | |-- LBRACE: { -| | | | | | |-- blockItem -| | | | | | | `-- stmt -| | | | | | | |-- lVal -| | | | | | | | |-- Ident: s -| | | | | | | | |-- LBRACK: [ -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- number -| | | | | | | | | `-- IntConst: 4 -| | | | | | | | `-- RBRACK: ] -| | | | | | | |-- ASSIGN: = -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 4 -| | | | | | | `-- SEMI: ; -| | | | | | |-- blockItem -| | | | | | | `-- stmt -| | | | | | | |-- IF: if -| | | | | | | |-- LPAREN: ( -| | | | | | | |-- cond -| | | | | | | | `-- lOrExp -| | | | | | | | `-- lAndExp -| | | | | | | | `-- eqExp -| | | | | | | | `-- relExp -| | | | | | | | |-- relExp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: i -| | | | | | | | |-- GT: > -| | | | | | | | `-- addExp -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 5 -| | | | | | | |-- RPAREN: ) -| | | | | | | `-- stmt -| | | | | | | `-- block -| | | | | | | |-- LBRACE: { -| | | | | | | |-- blockItem -| | | | | | | | `-- stmt -| | | | | | | | |-- lVal -| | | | | | | | | |-- Ident: s -| | | | | | | | | |-- LBRACK: [ -| | | | | | | | | |-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- number -| | | | | | | | | | `-- IntConst: 5 -| | | | | | | | | `-- RBRACK: ] -| | | | | | | | |-- ASSIGN: = -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- number -| | | | | | | | | `-- IntConst: 5 -| | | | | | | | `-- SEMI: ; -| | | | | | | |-- blockItem -| | | | | | | | `-- stmt -| | | | | | | | |-- IF: if -| | | | | | | | |-- LPAREN: ( -| | | | | | | | |-- cond -| | | | | | | | | `-- lOrExp -| | | | | | | | | `-- lAndExp -| | | | | | | | | `-- eqExp -| | | | | | | | | `-- relExp -| | | | | | | | | |-- relExp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: i -| | | | | | | | | |-- GT: > -| | | | | | | | | `-- addExp -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- number -| | | | | | | | | `-- IntConst: 6 -| | | | | | | | |-- RPAREN: ) -| | | | | | | | `-- stmt -| | | | | | | | `-- block -| | | | | | | | |-- LBRACE: { -| | | | | | | | |-- blockItem -| | | | | | | | | `-- stmt -| | | | | | | | | |-- lVal -| | | | | | | | | | |-- Ident: s -| | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- number -| | | | | | | | | | | `-- IntConst: 6 -| | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | |-- ASSIGN: = -| | | | | | | | | |-- exp -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- number -| | | | | | | | | | `-- IntConst: 6 -| | | | | | | | | `-- SEMI: ; -| | | | | | | | |-- blockItem -| | | | | | | | | `-- stmt -| | | | | | | | | |-- IF: if -| | | | | | | | | |-- LPAREN: ( -| | | | | | | | | |-- cond -| | | | | | | | | | `-- lOrExp -| | | | | | | | | | `-- lAndExp -| | | | | | | | | | `-- eqExp -| | | | | | | | | | `-- relExp -| | | | | | | | | | |-- relExp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- lVal -| | | | | | | | | | | `-- Ident: i -| | | | | | | | | | |-- GT: > -| | | | | | | | | | `-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- number -| | | | | | | | | | `-- IntConst: 7 -| | | | | | | | | |-- RPAREN: ) -| | | | | | | | | `-- stmt -| | | | | | | | | `-- block -| | | | | | | | | |-- LBRACE: { -| | | | | | | | | |-- blockItem -| | | | | | | | | | `-- stmt -| | | | | | | | | | |-- lVal -| | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | |-- exp -| | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- number -| | | | | | | | | | | | `-- IntConst: 7 -| | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | |-- exp -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- number -| | | | | | | | | | | `-- IntConst: 7 -| | | | | | | | | | `-- SEMI: ; -| | | | | | | | | |-- blockItem -| | | | | | | | | | `-- stmt -| | | | | | | | | | |-- IF: if -| | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | |-- cond -| | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | `-- eqExp -| | | | | | | | | | | `-- relExp -| | | | | | | | | | | |-- relExp -| | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | |-- GT: > -| | | | | | | | | | | `-- addExp -| | | | | | | | | | | `-- mulExp -| | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | `-- number -| | | | | | | | | | | `-- IntConst: 8 -| | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | `-- stmt -| | | | | | | | | | `-- block -| | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | |-- blockItem -| | | | | | | | | | | `-- stmt -| | | | | | | | | | | |-- lVal -| | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | `-- IntConst: 8 -| | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | |-- exp -| | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- number -| | | | | | | | | | | | `-- IntConst: 8 -| | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | |-- blockItem -| | | | | | | | | | | `-- stmt -| | | | | | | | | | | |-- IF: if -| | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | |-- cond -| | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | `-- number -| | | | | | | | | | | | `-- IntConst: 9 -| | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | `-- stmt -| | | | | | | | | | | `-- block -| | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | `-- IntConst: 9 -| | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | `-- IntConst: 9 -| | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | `-- IntConst: 10 -| | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | `-- block -| | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | `-- IntConst: 10 -| | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | `-- IntConst: 10 -| | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | `-- IntConst: 11 -| | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | `-- IntConst: 11 -| | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | `-- IntConst: 11 -| | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | `-- IntConst: 12 -| | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | `-- IntConst: 12 -| | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | `-- IntConst: 12 -| | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | `-- IntConst: 13 -| | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | `-- IntConst: 13 -| | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | `-- IntConst: 13 -| | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | `-- IntConst: 14 -| | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | `-- IntConst: 14 -| | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | `-- IntConst: 14 -| | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | `-- IntConst: 15 -| | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | `-- IntConst: 15 -| | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | `-- IntConst: 15 -| | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | `-- IntConst: 16 -| | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 16 -| | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | `-- IntConst: 16 -| | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 -| | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 -| | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 17 -| | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 -| | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 -| | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 18 -| | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 -| | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 -| | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 19 -| | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 -| | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 -| | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 20 -| | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 -| | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 -| | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 21 -| | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 -| | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 22 -| | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 -| | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 23 -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 24 -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 25 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 26 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 27 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 28 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 29 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 30 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 31 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 32 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 33 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 34 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 35 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 36 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 37 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 38 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 39 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 40 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 41 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 42 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 43 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 44 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 45 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 46 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 47 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 48 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 49 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 50 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 51 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 52 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 53 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 54 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 55 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 56 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 57 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 58 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 59 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 60 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 61 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 62 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 63 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 64 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 65 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 66 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 67 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 68 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 69 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 70 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 71 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 72 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 73 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 74 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 75 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 76 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 77 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 78 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 79 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 80 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 81 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 82 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 83 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 84 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 85 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 86 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 87 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 88 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 89 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 90 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 91 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 92 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 93 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 94 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 95 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 96 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 97 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 98 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- IF: if -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LPAREN: ( -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- cond -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lOrExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lAndExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- eqExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- relExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- Ident: i -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- GT: > -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- RPAREN: ) -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- block -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACE: { -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- blockItem -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- stmt -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- lVal -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- Ident: s -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- LBRACK: [ -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACK: ] -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- ASSIGN: = -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |-- exp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- addExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- mulExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- unaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- primaryExp -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- number -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- IntConst: 99 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- SEMI: ; -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | | `-- RBRACE: } -| | | | | | | | | | `-- RBRACE: } -| | | | | | | | | `-- RBRACE: } -| | | | | | | | `-- RBRACE: } -| | | | | | | `-- RBRACE: } -| | | | | | `-- RBRACE: } -| | | | | `-- RBRACE: } -| | | | `-- RBRACE: } -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- decl -| | | `-- varDecl -| | | |-- bType -| | | | `-- INT: int -| | | |-- varDef -| | | | |-- Ident: m -| | | | |-- ASSIGN: = -| | | | `-- initVal -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: m -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 100 -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: sum -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: sum -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: s -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: m -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: m -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: m -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: sum -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: sum -| | | | |-- MOD: % -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 65535 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: sum -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: loopcount - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putint - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: func - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: loopcount - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/large_loop_array_2.tree b/output/lab1/large_loop_array_2.tree index 6adde8d..338ab29 100644 --- a/output/lab1/large_loop_array_2.tree +++ b/output/lab1/large_loop_array_2.tree @@ -1,778 +1 @@ -compUnit -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: COUNT -| | |-- ASSIGN: = -| | `-- initVal -| | `-- exp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 500000 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- FLOAT: float -| |-- Ident: loop -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: x -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: y -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: length -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- FLOAT: float -| | |-- varDef -| | | |-- Ident: accumulator -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- FloatConst: 0.0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: length -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: accumulator -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: accumulator -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: x -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- MUL: * -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: y -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: accumulator -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | |-- COMMA: , - | |-- varDef - | | |-- Ident: j - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: len - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: x - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4096 - | | `-- RBRACK: ] - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: y - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 4096 - | | `-- RBRACK: ] - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: total - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 0.0 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: a - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 0.0 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: b - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 1.0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: COUNT - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- IF: if - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- MOD: % - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | |-- RPAREN: ) - | | |-- stmt - | | | `-- block - | | | |-- LBRACE: { - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: a - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- FloatConst: 0.0 - | | | | `-- SEMI: ; - | | | |-- blockItem - | | | | `-- stmt - | | | | |-- lVal - | | | | | `-- Ident: b - | | | | |-- ASSIGN: = - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- FloatConst: 1.0 - | | | | `-- SEMI: ; - | | | `-- RBRACE: } - | | |-- ELSE: else - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: a - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: a - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- FloatConst: 0.1 - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: b - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: b - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- FloatConst: 0.2 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- WHILE: while - | | |-- LPAREN: ( - | | |-- cond - | | | `-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | |-- LT: < - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: len - | | |-- RPAREN: ) - | | `-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: x - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: a - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | |-- Ident: y - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | `-- RBRACK: ] - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: b - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: j - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- lVal - | | | | `-- Ident: j - | | | |-- ASSIGN: = - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: j - | | | | |-- ADD: + - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: total - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: total - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: loop - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: x - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: y - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: len - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | |-- lOrExp - | | | `-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | |-- LPAREN: ( - | | | | |-- exp - | | | | | `-- addExp - | | | | | |-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: total - | | | | | |-- SUB: - - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- FloatConst: 11442437121638400.000000 - | | | | `-- RPAREN: ) - | | | |-- LE: <= - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- FloatConst: 0.000001 - | | |-- OR: || - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | |-- LPAREN: ( - | | | |-- exp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: total - | | | | |-- SUB: - - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- FloatConst: 11442437121638400.000000 - | | | `-- RPAREN: ) - | | |-- GE: >= - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- SUB: - - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 0.000001 - | |-- RPAREN: ) - | |-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: putint - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 0 - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | |-- blockItem - | | | `-- stmt - | | | |-- RETURN: return - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- ELSE: else - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putint - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 1 - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- RETURN: return - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/simple_add.tree b/output/lab1/simple_add.tree index 3bf46d0..338ab29 100644 --- a/output/lab1/simple_add.tree +++ b/output/lab1/simple_add.tree @@ -1,62 +1 @@ -compUnit -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: a - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1 - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: b - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 2 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | |-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | |-- ADD: + - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: b - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/transpose0.tree b/output/lab1/transpose0.tree index ee46146..338ab29 100644 --- a/output/lab1/transpose0.tree +++ b/output/lab1/transpose0.tree @@ -1,889 +1 @@ -compUnit -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: matrix -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 20000000 -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- decl -| `-- varDecl -| |-- bType -| | `-- INT: int -| |-- varDef -| | |-- Ident: a -| | |-- LBRACK: [ -| | |-- constExp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 100000 -| | `-- RBRACK: ] -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: transpose -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: n -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | |-- Ident: matrix -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: rowsize -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: colsize -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | |-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- DIV: / -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: rowsize -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: colsize -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: j -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 0 -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: rowsize -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- IF: if -| | | | |-- LPAREN: ( -| | | | |-- cond -| | | | | `-- lOrExp -| | | | | `-- lAndExp -| | | | | `-- eqExp -| | | | | `-- relExp -| | | | | |-- relExp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | |-- LT: < -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- RPAREN: ) -| | | | `-- stmt -| | | | `-- block -| | | | |-- LBRACE: { -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ASSIGN: = -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 1 -| | | | | `-- SEMI: ; -| | | | |-- blockItem -| | | | | `-- stmt -| | | | | |-- CONTINUE: continue -| | | | | `-- SEMI: ; -| | | | `-- RBRACE: } -| | | |-- blockItem -| | | | `-- decl -| | | | `-- varDecl -| | | | |-- bType -| | | | | `-- INT: int -| | | | |-- varDef -| | | | | |-- Ident: curr -| | | | | |-- ASSIGN: = -| | | | | `-- initVal -| | | | | `-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: matrix -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: rowsize -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: matrix -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: j -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: colsize -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: matrix -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: rowsize -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | `-- RBRACK: ] -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | |-- Ident: matrix -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- lVal -| | | | | | | | `-- Ident: i -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: rowsize -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | `-- RBRACK: ] -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: curr -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- unaryOp -| | | | `-- SUB: - -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 1 -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: n - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getint - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: len - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: getarray - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: a - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: i - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: matrix - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: len - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: transpose - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: matrix - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | |-- Ident: a - | | | | |-- LBRACK: [ - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | `-- RBRACK: ] - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: ans - | | |-- ASSIGN: = - | | `-- initVal - | | `-- 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 - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: len - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: ans - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: ans - | | | |-- ADD: + - | | | `-- mulExp - | | | |-- mulExp - | | | | |-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: i - | | | | |-- MUL: * - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- MUL: * - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | |-- Ident: matrix - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: ans - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | |-- RPAREN: ) - | `-- stmt - | |-- lVal - | | `-- Ident: ans - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- SUB: - - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: ans - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putint - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: ans - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/output/lab1/vector_mul3.tree b/output/lab1/vector_mul3.tree index 43148ff..338ab29 100644 --- a/output/lab1/vector_mul3.tree +++ b/output/lab1/vector_mul3.tree @@ -1,1572 +1 @@ -compUnit -|-- funcDef -| |-- funcType -| | `-- INT: int -| |-- Ident: func -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: i -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: j -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | |-- LPAREN: ( -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | |-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | |-- LPAREN: ( -| | | | | | | | |-- exp -| | | | | | | | | `-- addExp -| | | | | | | | | |-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: i -| | | | | | | | | |-- ADD: + -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: j -| | | | | | | | `-- RPAREN: ) -| | | | | | | |-- MUL: * -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | |-- LPAREN: ( -| | | | | | | |-- exp -| | | | | | | | `-- addExp -| | | | | | | | |-- addExp -| | | | | | | | | |-- addExp -| | | | | | | | | | `-- mulExp -| | | | | | | | | | `-- unaryExp -| | | | | | | | | | `-- primaryExp -| | | | | | | | | | `-- lVal -| | | | | | | | | | `-- Ident: i -| | | | | | | | | |-- ADD: + -| | | | | | | | | `-- mulExp -| | | | | | | | | `-- unaryExp -| | | | | | | | | `-- primaryExp -| | | | | | | | | `-- lVal -| | | | | | | | | `-- Ident: j -| | | | | | | | |-- ADD: + -| | | | | | | | `-- mulExp -| | | | | | | | `-- unaryExp -| | | | | | | | `-- primaryExp -| | | | | | | | `-- number -| | | | | | | | `-- IntConst: 1 -| | | | | | | `-- RPAREN: ) -| | | | | | |-- DIV: / -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- number -| | | | | | `-- IntConst: 2 -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- FLOAT: float -| |-- Ident: Vectordot -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: v -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: u -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: n -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- FLOAT: float -| | |-- varDef -| | | |-- Ident: sum -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: sum -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: sum -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | |-- Ident: v -| | | | | |-- LBRACK: [ -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RBRACK: ] -| | | | |-- MUL: * -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | |-- Ident: u -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: sum -| | `-- SEMI: ; -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: mult1 -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: v -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: out -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: n -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | |-- COMMA: , -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- FLOAT: float -| | |-- varDef -| | | |-- Ident: sum -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: sum -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: sum -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: v -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | |-- Ident: func -| | | | | |-- LPAREN: ( -| | | | | |-- funcRParams -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: i -| | | | | | |-- COMMA: , -| | | | | | `-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: out -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: sum -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: mult2 -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: v -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: out -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- INT: int -| | `-- Ident: n -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- INT: int -| | |-- varDef -| | | |-- Ident: i -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | |-- COMMA: , -| | |-- varDef -| | | |-- Ident: j -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- decl -| | `-- varDecl -| | |-- bType -| | | `-- FLOAT: float -| | |-- varDef -| | | |-- Ident: sum -| | | |-- ASSIGN: = -| | | `-- initVal -| | | `-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- IntConst: 0 -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: i -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: n -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- WHILE: while -| | | |-- LPAREN: ( -| | | |-- cond -| | | | `-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: j -| | | | |-- LT: < -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | |-- RPAREN: ) -| | | `-- stmt -| | | `-- block -| | | |-- LBRACE: { -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: sum -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: sum -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | |-- Ident: v -| | | | | | |-- LBRACK: [ -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | `-- RBRACK: ] -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | |-- Ident: func -| | | | | |-- LPAREN: ( -| | | | | |-- funcRParams -| | | | | | |-- exp -| | | | | | | `-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: j -| | | | | | |-- COMMA: , -| | | | | | `-- exp -| | | | | | `-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: i -| | | | | `-- RPAREN: ) -| | | | `-- SEMI: ; -| | | |-- blockItem -| | | | `-- stmt -| | | | |-- lVal -| | | | | `-- Ident: j -| | | | |-- ASSIGN: = -| | | | |-- exp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: j -| | | | | |-- ADD: + -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- number -| | | | | `-- IntConst: 1 -| | | | `-- SEMI: ; -| | | `-- RBRACE: } -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | |-- Ident: out -| | | | |-- LBRACK: [ -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | `-- RBRACK: ] -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: sum -| | | `-- SEMI: ; -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: i -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: i -| | | | |-- ADD: + -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 1 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| `-- RBRACE: } -|-- funcDef -| |-- funcType -| | `-- VOID: void -| |-- Ident: mult_combin -| |-- LPAREN: ( -| |-- funcFParams -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: v -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- FLOAT: float -| | | |-- Ident: out -| | | |-- LBRACK: [ -| | | `-- RBRACK: ] -| | |-- COMMA: , -| | |-- funcFParam -| | | |-- bType -| | | | `-- INT: int -| | | `-- Ident: n -| | |-- COMMA: , -| | `-- funcFParam -| | |-- bType -| | | `-- FLOAT: float -| | |-- Ident: tmp -| | |-- LBRACK: [ -| | `-- RBRACK: ] -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: mult1 -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: v -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: tmp -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| |-- blockItem -| | `-- stmt -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- Ident: mult2 -| | | |-- LPAREN: ( -| | | |-- funcRParams -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: tmp -| | | | |-- COMMA: , -| | | | |-- exp -| | | | | `-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: out -| | | | |-- COMMA: , -| | | | `-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: n -| | | `-- RPAREN: ) -| | `-- SEMI: ; -| `-- RBRACE: } -|-- decl -| `-- varDecl -| |-- bType -| | `-- FLOAT: float -| |-- varDef -| | |-- Ident: temp -| | |-- ASSIGN: = -| | `-- initVal -| | `-- exp -| | `-- addExp -| | `-- mulExp -| | `-- unaryExp -| | `-- primaryExp -| | `-- number -| | `-- IntConst: 1 -| `-- SEMI: ; -|-- funcDef -| |-- funcType -| | `-- FLOAT: float -| |-- Ident: my_sqrt -| |-- LPAREN: ( -| |-- funcFParams -| | `-- funcFParam -| | |-- bType -| | | `-- FLOAT: float -| | `-- Ident: input -| |-- RPAREN: ) -| `-- block -| |-- LBRACE: { -| |-- blockItem -| | `-- stmt -| | |-- WHILE: while -| | |-- LPAREN: ( -| | |-- cond -| | | `-- lOrExp -| | | |-- lOrExp -| | | | `-- lAndExp -| | | | `-- eqExp -| | | | `-- relExp -| | | | |-- relExp -| | | | | `-- addExp -| | | | | |-- addExp -| | | | | | `-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: temp -| | | | | |-- SUB: - -| | | | | `-- mulExp -| | | | | |-- mulExp -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: input -| | | | | |-- DIV: / -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: temp -| | | | |-- GT: > -| | | | `-- addExp -| | | | `-- mulExp -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- FloatConst: 1e-6 -| | | |-- OR: || -| | | `-- lAndExp -| | | `-- eqExp -| | | `-- relExp -| | | |-- relExp -| | | | `-- addExp -| | | | |-- addExp -| | | | | `-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: temp -| | | | |-- SUB: - -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | `-- lVal -| | | | | `-- Ident: input -| | | | |-- DIV: / -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- lVal -| | | | `-- Ident: temp -| | | |-- LT: < -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | |-- unaryOp -| | | | `-- SUB: - -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- number -| | | `-- FloatConst: 1e-6 -| | |-- RPAREN: ) -| | `-- stmt -| | `-- block -| | |-- LBRACE: { -| | |-- blockItem -| | | `-- stmt -| | | |-- lVal -| | | | `-- Ident: temp -| | | |-- ASSIGN: = -| | | |-- exp -| | | | `-- addExp -| | | | `-- mulExp -| | | | |-- mulExp -| | | | | `-- unaryExp -| | | | | `-- primaryExp -| | | | | |-- LPAREN: ( -| | | | | |-- exp -| | | | | | `-- addExp -| | | | | | |-- addExp -| | | | | | | `-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: temp -| | | | | | |-- ADD: + -| | | | | | `-- mulExp -| | | | | | |-- mulExp -| | | | | | | `-- unaryExp -| | | | | | | `-- primaryExp -| | | | | | | `-- lVal -| | | | | | | `-- Ident: input -| | | | | | |-- DIV: / -| | | | | | `-- unaryExp -| | | | | | `-- primaryExp -| | | | | | `-- lVal -| | | | | | `-- Ident: temp -| | | | | `-- RPAREN: ) -| | | | |-- DIV: / -| | | | `-- unaryExp -| | | | `-- primaryExp -| | | | `-- number -| | | | `-- IntConst: 2 -| | | `-- SEMI: ; -| | `-- RBRACE: } -| |-- blockItem -| | `-- stmt -| | |-- RETURN: return -| | |-- exp -| | | `-- addExp -| | | `-- mulExp -| | | `-- unaryExp -| | | `-- primaryExp -| | | `-- lVal -| | | `-- Ident: temp -| | `-- SEMI: ; -| `-- RBRACE: } -`-- funcDef - |-- funcType - | `-- INT: int - |-- Ident: main - |-- LPAREN: ( - |-- RPAREN: ) - `-- block - |-- LBRACE: { - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | |-- Ident: n - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 100000 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: n - | | |-- LE: <= - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: n - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 2000 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: starttime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: vectorA - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 100000 - | | `-- RBRACK: ] - | |-- COMMA: , - | |-- varDef - | | |-- Ident: vectorB - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 100000 - | | `-- RBRACK: ] - | |-- COMMA: , - | |-- varDef - | | |-- Ident: Vectortmp - | | |-- LBRACK: [ - | | |-- constExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 100000 - | | `-- RBRACK: ] - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- INT: int - | |-- varDef - | | `-- Ident: i - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- lVal - | | `-- Ident: n - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | |-- Ident: vectorA - | | | |-- LBRACK: [ - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | `-- RBRACK: ] - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- lVal - | | `-- Ident: i - | |-- ASSIGN: = - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- WHILE: while - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- lVal - | | | `-- Ident: i - | | |-- LT: < - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 1000 - | |-- RPAREN: ) - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: mult_combin - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: vectorA - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: vectorB - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: Vectortmp - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: mult_combin - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: vectorB - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: vectorA - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: Vectortmp - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | |-- blockItem - | | `-- stmt - | | |-- lVal - | | | `-- Ident: i - | | |-- ASSIGN: = - | | |-- exp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: i - | | | |-- ADD: + - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 1 - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: stoptime - | | |-- LPAREN: ( - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- decl - | `-- varDecl - | |-- bType - | | `-- FLOAT: float - | |-- varDef - | | |-- Ident: result - | | |-- ASSIGN: = - | | `-- initVal - | | `-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: my_sqrt - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | |-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: Vectordot - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: vectorA - | | | | | |-- COMMA: , - | | | | | |-- exp - | | | | | | `-- addExp - | | | | | | `-- mulExp - | | | | | | `-- unaryExp - | | | | | | `-- primaryExp - | | | | | | `-- lVal - | | | | | | `-- Ident: vectorB - | | | | | |-- COMMA: , - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: n - | | | | `-- RPAREN: ) - | | | |-- DIV: / - | | | `-- unaryExp - | | | |-- Ident: Vectordot - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: vectorB - | | | | |-- COMMA: , - | | | | |-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: vectorB - | | | | |-- COMMA: , - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: n - | | | `-- RPAREN: ) - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- IF: if - | |-- LPAREN: ( - | |-- cond - | | `-- lOrExp - | | `-- lAndExp - | | |-- lAndExp - | | | `-- eqExp - | | | `-- relExp - | | | |-- relExp - | | | | `-- addExp - | | | | |-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- lVal - | | | | | `-- Ident: result - | | | | |-- SUB: - - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- FloatConst: 1.000000 - | | | |-- LE: <= - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- FloatConst: 1e-6 - | | |-- AND: && - | | `-- eqExp - | | `-- relExp - | | |-- relExp - | | | `-- addExp - | | | |-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- lVal - | | | | `-- Ident: result - | | | |-- SUB: - - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- FloatConst: 1.000000 - | | |-- GE: >= - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- unaryOp - | | | `-- SUB: - - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- FloatConst: 1e-6 - | |-- RPAREN: ) - | |-- stmt - | | `-- block - | | |-- LBRACE: { - | | |-- blockItem - | | | `-- stmt - | | | |-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | |-- Ident: putint - | | | | |-- LPAREN: ( - | | | | |-- funcRParams - | | | | | `-- exp - | | | | | `-- addExp - | | | | | `-- mulExp - | | | | | `-- unaryExp - | | | | | `-- primaryExp - | | | | | `-- number - | | | | | `-- IntConst: 1 - | | | | `-- RPAREN: ) - | | | `-- SEMI: ; - | | `-- RBRACE: } - | |-- ELSE: else - | `-- stmt - | `-- block - | |-- LBRACE: { - | |-- blockItem - | | `-- stmt - | | |-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | |-- Ident: putint - | | | |-- LPAREN: ( - | | | |-- funcRParams - | | | | `-- exp - | | | | `-- addExp - | | | | `-- mulExp - | | | | `-- unaryExp - | | | | `-- primaryExp - | | | | `-- number - | | | | `-- IntConst: 0 - | | | `-- RPAREN: ) - | | `-- SEMI: ; - | `-- RBRACE: } - |-- blockItem - | `-- stmt - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | |-- Ident: putch - | | |-- LPAREN: ( - | | |-- funcRParams - | | | `-- exp - | | | `-- addExp - | | | `-- mulExp - | | | `-- unaryExp - | | | `-- primaryExp - | | | `-- number - | | | `-- IntConst: 10 - | | `-- RPAREN: ) - | `-- SEMI: ; - |-- blockItem - | `-- stmt - | |-- RETURN: return - | |-- exp - | | `-- addExp - | | `-- mulExp - | | `-- unaryExp - | | `-- primaryExp - | | `-- number - | | `-- IntConst: 0 - | `-- SEMI: ; - `-- RBRACE: } +./scripts/lab1_build_test.sh: line 111: /home/zhangwanzheng/nudt-compiler-cpp/build/bin/compiler: No such file or directory diff --git a/scripts/lab1_build_test.sh b/scripts/lab1_build_test.sh old mode 100644 new mode 100755 diff --git a/src/sem/ConstEval.cpp b/src/sem/ConstEval.cpp index 3e2f66e..6e4a23e 100644 --- a/src/sem/ConstEval.cpp +++ b/src/sem/ConstEval.cpp @@ -1,4 +1,752 @@ -// 常量求值: -// - 处理数组维度、全局初始化、const 表达式等编译期可计算场景 -// - 为语义分析与 IR 生成提供常量折叠/常量值信息 +#include "sem/ConstEval.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "SysYBaseVisitor.h" +#include "utils/Log.h" + +namespace { + +using DataType = SymbolDataType; + +bool IsNumericType(DataType type) { + return type == DataType::Int || type == DataType::Float || + type == DataType::Bool; +} + +ConstValue MakeZeroValue(DataType type) { + switch (type) { + case DataType::Float: + return ConstValue::FromFloat(0.0); + case DataType::Int: + return ConstValue::FromInt(0); + case DataType::Bool: + return ConstValue::FromBool(false); + default: + return ConstValue{}; + } +} + +ConstValue CastToType(ConstValue value, DataType target_type) { + switch (target_type) { + case DataType::Int: + return ConstValue::FromInt(value.AsInt()); + case DataType::Float: + return ConstValue::FromFloat(value.AsFloat()); + case DataType::Bool: + return ConstValue::FromBool(value.AsBool()); + default: + throw std::runtime_error( + FormatError("consteval", "不支持的常量目标类型转换")); + } +} + +int64_t ParseIntLiteral(const std::string& text) { + char* end = nullptr; + const long long value = std::strtoll(text.c_str(), &end, 0); + if (end == text.c_str() || *end != '\0') { + throw std::runtime_error( + FormatError("consteval", "整数字面量解析失败: " + text)); + } + return static_cast(value); +} + +double ParseFloatLiteral(const std::string& text) { + char* end = nullptr; + const double value = std::strtod(text.c_str(), &end); + if (end == text.c_str() || *end != '\0') { + throw std::runtime_error( + FormatError("consteval", "浮点数字面量解析失败: " + text)); + } + return value; +} + +size_t Product(const std::vector& dims, size_t begin) { + size_t result = 1; + for (size_t i = begin; i < dims.size(); ++i) { + if (dims[i] <= 0) { + throw std::runtime_error( + FormatError("consteval", "数组维度必须为正整数")); + } + const size_t dim = static_cast(dims[i]); + if (result > std::numeric_limits::max() / dim) { + throw std::runtime_error( + FormatError("consteval", "数组维度乘积溢出")); + } + result *= dim; + } + return result; +} + +class ConstEvalVisitor final : public SysYBaseVisitor { + public: + ConstEvalVisitor(const SymbolTable& table, const ConstEvalContext& values) + : table_(table), values_(values) {} + + ConstValue EvaluateConstExp(SysYParser::ConstExpContext& ctx) { + return Evaluate(ctx.addExp()); + } + + ConstValue EvaluateExp(SysYParser::ExpContext& ctx) { + return Evaluate(ctx.addExp()); + } + + std::any visitExp(SysYParser::ExpContext* ctx) override { + if (!ctx || !ctx->addExp()) { + throw std::runtime_error(FormatError("consteval", "非法表达式")); + } + return Evaluate(ctx->addExp()); + } + + std::any visitConstExp(SysYParser::ConstExpContext* ctx) override { + if (!ctx || !ctx->addExp()) { + throw std::runtime_error(FormatError("consteval", "非法 constExp")); + } + return Evaluate(ctx->addExp()); + } + + std::any visitCond(SysYParser::CondContext* ctx) override { + if (!ctx || !ctx->lOrExp()) { + throw std::runtime_error(FormatError("consteval", "非法条件表达式")); + } + return Evaluate(ctx->lOrExp()); + } + + std::any visitLVal(SysYParser::LValContext* ctx) override { + if (!ctx || !ctx->Ident()) { + throw std::runtime_error(FormatError("consteval", "非法左值")); + } + const std::string name = ctx->Ident()->getText(); + const SymbolEntry* symbol = table_.Lookup(name); + if (!symbol) { + throw std::runtime_error(FormatError("consteval", "未定义符号: " + name)); + } + if (!symbol->is_const && symbol->kind != SymbolKind::Constant) { + throw std::runtime_error( + FormatError("consteval", "常量表达式中使用了非常量符号: " + name)); + } + + const size_t index_count = ctx->exp().size(); + if (index_count == 0) { + if (const ConstValue* scalar = values_.LookupScalar(name)) { + return *scalar; + } + if (values_.LookupArray(name)) { + throw std::runtime_error( + FormatError("consteval", "数组名不能作为标量常量参与求值: " + name)); + } + throw std::runtime_error( + FormatError("consteval", "常量符号缺少编译期值: " + name)); + } + + const ConstArrayValue* array = values_.LookupArray(name); + if (!array) { + throw std::runtime_error( + FormatError("consteval", "下标访问目标不是常量数组: " + name)); + } + if (index_count != array->dims.size()) { + throw std::runtime_error( + FormatError("consteval", "常量数组索引维度不匹配: " + name)); + } + + size_t linear_index = 0; + for (size_t i = 0; i < index_count; ++i) { + const ConstValue index_value = Evaluate(ctx->exp(i)); + const int64_t index = index_value.AsInt(); + const int64_t dim = array->dims[i]; + if (index < 0 || index >= dim) { + throw std::runtime_error( + FormatError("consteval", "常量数组访问越界: " + name)); + } + linear_index = linear_index * static_cast(dim) + + static_cast(index); + } + + if (linear_index >= array->elements.size()) { + throw std::runtime_error( + FormatError("consteval", "常量数组线性索引越界: " + name)); + } + return array->elements[linear_index]; + } + + std::any visitPrimaryExp(SysYParser::PrimaryExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 primaryExp")); + } + if (ctx->exp()) { + return Evaluate(ctx->exp()); + } + if (ctx->lVal()) { + return Evaluate(ctx->lVal()); + } + if (ctx->number()) { + return Evaluate(ctx->number()); + } + throw std::runtime_error(FormatError("consteval", "无法识别的 primaryExp")); + } + + std::any visitNumber(SysYParser::NumberContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法数字节点")); + } + if (ctx->IntConst()) { + return ConstValue::FromInt(ParseIntLiteral(ctx->IntConst()->getText())); + } + if (ctx->FloatConst()) { + return ConstValue::FromFloat( + ParseFloatLiteral(ctx->FloatConst()->getText())); + } + throw std::runtime_error(FormatError("consteval", "未知数字字面量类型")); + } + + std::any visitUnaryExp(SysYParser::UnaryExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 unaryExp")); + } + if (ctx->primaryExp()) { + return Evaluate(ctx->primaryExp()); + } + if (ctx->Ident()) { + throw std::runtime_error( + FormatError("consteval", "常量表达式中不允许函数调用: " + + ctx->Ident()->getText())); + } + + if (!ctx->unaryOp() || !ctx->unaryExp()) { + throw std::runtime_error(FormatError("consteval", "非法一元表达式结构")); + } + const ConstValue operand = Evaluate(ctx->unaryExp()); + + if (ctx->unaryOp()->ADD()) { + if (!operand.IsNumeric()) { + throw std::runtime_error(FormatError("consteval", "一元加仅支持数值类型")); + } + if (operand.type == DataType::Float) { + return ConstValue::FromFloat(+operand.AsFloat()); + } + return ConstValue::FromInt(+operand.AsInt()); + } + if (ctx->unaryOp()->SUB()) { + if (!operand.IsNumeric()) { + throw std::runtime_error(FormatError("consteval", "一元减仅支持数值类型")); + } + if (operand.type == DataType::Float) { + return ConstValue::FromFloat(-operand.AsFloat()); + } + return ConstValue::FromInt(-operand.AsInt()); + } + if (ctx->unaryOp()->NOT()) { + return ConstValue::FromBool(!operand.AsBool()); + } + + throw std::runtime_error(FormatError("consteval", "未知一元运算符")); + } + + std::any visitMulExp(SysYParser::MulExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 mulExp")); + } + if (!ctx->mulExp()) { + return Evaluate(ctx->unaryExp()); + } + + const ConstValue lhs = Evaluate(ctx->mulExp()); + const ConstValue rhs = Evaluate(ctx->unaryExp()); + if (!lhs.IsNumeric() || !rhs.IsNumeric()) { + throw std::runtime_error( + FormatError("consteval", "乘除模运算只支持数值类型")); + } + + const int op = ctx->op ? ctx->op->getType() : 0; + if (op == SysYParser::MUL) { + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + return ConstValue::FromFloat(lhs.AsFloat() * rhs.AsFloat()); + } + return ConstValue::FromInt(lhs.AsInt() * rhs.AsInt()); + } + if (op == SysYParser::DIV) { + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + const double divisor = rhs.AsFloat(); + if (divisor == 0.0) { + throw std::runtime_error(FormatError("consteval", "浮点除零")); + } + return ConstValue::FromFloat(lhs.AsFloat() / divisor); + } + const int64_t divisor = rhs.AsInt(); + if (divisor == 0) { + throw std::runtime_error(FormatError("consteval", "整数除零")); + } + return ConstValue::FromInt(lhs.AsInt() / divisor); + } + if (op == SysYParser::MOD) { + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + throw std::runtime_error( + FormatError("consteval", "取模运算不支持浮点类型")); + } + const int64_t divisor = rhs.AsInt(); + if (divisor == 0) { + throw std::runtime_error(FormatError("consteval", "整数取模除零")); + } + return ConstValue::FromInt(lhs.AsInt() % divisor); + } + + throw std::runtime_error(FormatError("consteval", "未知乘法类运算符")); + } + + std::any visitAddExp(SysYParser::AddExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 addExp")); + } + if (!ctx->addExp()) { + return Evaluate(ctx->mulExp()); + } + + const ConstValue lhs = Evaluate(ctx->addExp()); + const ConstValue rhs = Evaluate(ctx->mulExp()); + if (!lhs.IsNumeric() || !rhs.IsNumeric()) { + throw std::runtime_error(FormatError("consteval", "加减运算只支持数值类型")); + } + + const int op = ctx->op ? ctx->op->getType() : 0; + if (op == SysYParser::ADD) { + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + return ConstValue::FromFloat(lhs.AsFloat() + rhs.AsFloat()); + } + return ConstValue::FromInt(lhs.AsInt() + rhs.AsInt()); + } + if (op == SysYParser::SUB) { + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + return ConstValue::FromFloat(lhs.AsFloat() - rhs.AsFloat()); + } + return ConstValue::FromInt(lhs.AsInt() - rhs.AsInt()); + } + + throw std::runtime_error(FormatError("consteval", "未知加法类运算符")); + } + + std::any visitRelExp(SysYParser::RelExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 relExp")); + } + if (!ctx->relExp()) { + return Evaluate(ctx->addExp()); + } + + const ConstValue lhs = Evaluate(ctx->relExp()); + const ConstValue rhs = Evaluate(ctx->addExp()); + if (!lhs.IsNumeric() || !rhs.IsNumeric()) { + throw std::runtime_error( + FormatError("consteval", "关系比较仅支持数值类型")); + } + + const int op = ctx->op ? ctx->op->getType() : 0; + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + const double left = lhs.AsFloat(); + const double right = rhs.AsFloat(); + if (op == SysYParser::LT) { + return ConstValue::FromBool(left < right); + } + if (op == SysYParser::GT) { + return ConstValue::FromBool(left > right); + } + if (op == SysYParser::LE) { + return ConstValue::FromBool(left <= right); + } + if (op == SysYParser::GE) { + return ConstValue::FromBool(left >= right); + } + } else { + const int64_t left = lhs.AsInt(); + const int64_t right = rhs.AsInt(); + if (op == SysYParser::LT) { + return ConstValue::FromBool(left < right); + } + if (op == SysYParser::GT) { + return ConstValue::FromBool(left > right); + } + if (op == SysYParser::LE) { + return ConstValue::FromBool(left <= right); + } + if (op == SysYParser::GE) { + return ConstValue::FromBool(left >= right); + } + } + + throw std::runtime_error(FormatError("consteval", "未知关系比较运算符")); + } + + std::any visitEqExp(SysYParser::EqExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 eqExp")); + } + if (!ctx->eqExp()) { + return Evaluate(ctx->relExp()); + } + + const ConstValue lhs = Evaluate(ctx->eqExp()); + const ConstValue rhs = Evaluate(ctx->relExp()); + + const int op = ctx->op ? ctx->op->getType() : 0; + bool result = false; + if (lhs.type == DataType::Float || rhs.type == DataType::Float) { + const double left = lhs.AsFloat(); + const double right = rhs.AsFloat(); + if (op == SysYParser::EQ) { + result = (left == right); + } else if (op == SysYParser::NE) { + result = (left != right); + } else { + throw std::runtime_error(FormatError("consteval", "未知相等比较运算符")); + } + } else { + const int64_t left = lhs.AsInt(); + const int64_t right = rhs.AsInt(); + if (op == SysYParser::EQ) { + result = (left == right); + } else if (op == SysYParser::NE) { + result = (left != right); + } else { + throw std::runtime_error(FormatError("consteval", "未知相等比较运算符")); + } + } + return ConstValue::FromBool(result); + } + + std::any visitLAndExp(SysYParser::LAndExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 lAndExp")); + } + if (!ctx->lAndExp()) { + return ConstValue::FromBool(Evaluate(ctx->eqExp()).AsBool()); + } + + const ConstValue lhs = Evaluate(ctx->lAndExp()); + if (!lhs.AsBool()) { + return ConstValue::FromBool(false); + } + const ConstValue rhs = Evaluate(ctx->eqExp()); + return ConstValue::FromBool(rhs.AsBool()); + } + + std::any visitLOrExp(SysYParser::LOrExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "非法 lOrExp")); + } + if (!ctx->lOrExp()) { + return ConstValue::FromBool(Evaluate(ctx->lAndExp()).AsBool()); + } + + const ConstValue lhs = Evaluate(ctx->lOrExp()); + if (lhs.AsBool()) { + return ConstValue::FromBool(true); + } + const ConstValue rhs = Evaluate(ctx->lAndExp()); + return ConstValue::FromBool(rhs.AsBool()); + } + + private: + ConstValue Evaluate(antlr4::ParserRuleContext* ctx) { + if (!ctx) { + throw std::runtime_error(FormatError("consteval", "空表达式节点")); + } + std::any result = ctx->accept(this); + try { + return std::any_cast(result); + } catch (const std::bad_any_cast&) { + throw std::runtime_error(FormatError("consteval", "常量求值类型转换失败")); + } + } + + const SymbolTable& table_; + const ConstEvalContext& values_; +}; + +ConstValue EvaluateScalarInit(SysYParser::ConstInitValContext& init, + DataType elem_type, + ConstEvalVisitor& evaluator) { + if (init.constExp()) { + return CastToType(evaluator.EvaluateConstExp(*init.constExp()), elem_type); + } + if (init.constInitVal().empty()) { + return MakeZeroValue(elem_type); + } + if (init.constInitVal().size() == 1) { + return EvaluateScalarInit(*init.constInitVal().front(), elem_type, + evaluator); + } + throw std::runtime_error( + FormatError("consteval", "标量初始化含有过多元素")); +} + +void FillConstArrayObject(SysYParser::ConstInitValContext& init, + size_t depth, size_t base, size_t span, + const std::vector& dims, DataType elem_type, + std::vector& out, + ConstEvalVisitor& evaluator) { + if (depth >= dims.size()) { + out[base] = EvaluateScalarInit(init, elem_type, evaluator); + return; + } + + if (init.constExp()) { + out[base] = CastToType(evaluator.EvaluateConstExp(*init.constExp()), + elem_type); + return; + } + + if (init.constInitVal().empty()) { + return; + } + + const size_t end = base + span; + size_t cursor = base; + const size_t subspan = (depth + 1 < dims.size()) ? Product(dims, depth + 1) + : static_cast(1); + + for (auto* child : init.constInitVal()) { + if (!child) { + continue; + } + if (cursor >= end) { + throw std::runtime_error( + FormatError("consteval", "数组初始化元素过多")); + } + + if (depth + 1 >= dims.size()) { + out[cursor] = EvaluateScalarInit(*child, elem_type, evaluator); + ++cursor; + continue; + } + + if (child->constExp()) { + out[cursor] = CastToType(evaluator.EvaluateConstExp(*child->constExp()), + elem_type); + ++cursor; + continue; + } + + const size_t rel = cursor - base; + if (subspan > 1 && rel % subspan != 0) { + cursor += (subspan - (rel % subspan)); + } + if (cursor >= end) { + throw std::runtime_error( + FormatError("consteval", "数组初始化嵌套层级与维度不匹配")); + } + + FillConstArrayObject(*child, depth + 1, cursor, subspan, dims, elem_type, + out, evaluator); + cursor += subspan; + } +} + +} // namespace + +ConstValue ConstValue::FromInt(int64_t value) { + ConstValue result; + result.type = SymbolDataType::Int; + result.int_value = value; + result.float_value = static_cast(value); + result.bool_value = (value != 0); + return result; +} + +ConstValue ConstValue::FromFloat(double value) { + ConstValue result; + result.type = SymbolDataType::Float; + result.int_value = static_cast(value); + result.float_value = value; + result.bool_value = (value != 0.0); + return result; +} + +ConstValue ConstValue::FromBool(bool value) { + ConstValue result; + result.type = SymbolDataType::Bool; + result.int_value = value ? 1 : 0; + result.float_value = value ? 1.0 : 0.0; + result.bool_value = value; + return result; +} + +bool ConstValue::IsScalar() const { return type != SymbolDataType::Unknown; } + +bool ConstValue::IsNumeric() const { + return type == SymbolDataType::Int || type == SymbolDataType::Float || + type == SymbolDataType::Bool; +} + +int64_t ConstValue::AsInt() const { + if (type == SymbolDataType::Int) { + return int_value; + } + if (type == SymbolDataType::Float) { + return static_cast(float_value); + } + if (type == SymbolDataType::Bool) { + return bool_value ? 1 : 0; + } + throw std::runtime_error(FormatError("consteval", "当前值不能转为整数")); +} + +double ConstValue::AsFloat() const { + if (type == SymbolDataType::Float) { + return float_value; + } + if (type == SymbolDataType::Int) { + return static_cast(int_value); + } + if (type == SymbolDataType::Bool) { + return bool_value ? 1.0 : 0.0; + } + throw std::runtime_error(FormatError("consteval", "当前值不能转为浮点数")); +} + +bool ConstValue::AsBool() const { + if (type == SymbolDataType::Bool) { + return bool_value; + } + if (type == SymbolDataType::Int) { + return int_value != 0; + } + if (type == SymbolDataType::Float) { + return float_value != 0.0; + } + throw std::runtime_error(FormatError("consteval", "当前值不能转为布尔值")); +} + +ConstEvalContext::ConstEvalContext() { EnterScope(); } + +void ConstEvalContext::EnterScope() { scopes_.emplace_back(); } + +void ConstEvalContext::ExitScope() { + if (scopes_.size() <= 1) { + throw std::runtime_error("const eval scope underflow"); + } + scopes_.pop_back(); +} + +bool ConstEvalContext::DefineScalar(const std::string& name, ConstValue value) { + if (scopes_.empty()) { + EnterScope(); + } + auto& current = scopes_.back(); + if (current.find(name) != current.end()) { + return false; + } + Binding binding; + binding.is_array = false; + binding.scalar = std::move(value); + current.emplace(name, std::move(binding)); + return true; +} + +bool ConstEvalContext::DefineArray(const std::string& name, + ConstArrayValue value) { + if (scopes_.empty()) { + EnterScope(); + } + auto& current = scopes_.back(); + if (current.find(name) != current.end()) { + return false; + } + Binding binding; + binding.is_array = true; + binding.array = std::move(value); + current.emplace(name, std::move(binding)); + return true; +} + +const ConstValue* ConstEvalContext::LookupScalar(const std::string& name) const { + const Binding* binding = LookupBinding(name); + if (!binding || binding->is_array) { + return nullptr; + } + return &binding->scalar; +} + +const ConstArrayValue* ConstEvalContext::LookupArray( + const std::string& name) const { + const Binding* binding = LookupBinding(name); + if (!binding || !binding->is_array) { + return nullptr; + } + return &binding->array; +} + +const ConstEvalContext::Binding* ConstEvalContext::LookupBinding( + const std::string& name) const { + for (auto it = scopes_.rbegin(); it != scopes_.rend(); ++it) { + auto found = it->find(name); + if (found != it->end()) { + return &found->second; + } + } + return nullptr; +} + +ConstEvaluator::ConstEvaluator(const SymbolTable& table, + const ConstEvalContext& ctx) + : table_(table), ctx_(ctx) {} + +ConstValue ConstEvaluator::EvaluateConstExp( + SysYParser::ConstExpContext& ctx) const { + ConstEvalVisitor visitor(table_, ctx_); + return visitor.EvaluateConstExp(ctx); +} + +ConstValue ConstEvaluator::EvaluateExp(SysYParser::ExpContext& ctx) const { + ConstEvalVisitor visitor(table_, ctx_); + return visitor.EvaluateExp(ctx); +} + +int64_t ConstEvaluator::EvaluateArrayDim( + SysYParser::ConstExpContext& ctx) const { + const ConstValue value = EvaluateConstExp(ctx); + if (!IsNumericType(value.type)) { + throw std::runtime_error( + FormatError("consteval", "数组维度必须是数值类型")); + } + + if (value.type == DataType::Float) { + const double as_float = value.AsFloat(); + if (std::trunc(as_float) != as_float) { + throw std::runtime_error( + FormatError("consteval", "数组维度必须是整数")); + } + } + + const int64_t dim = value.AsInt(); + if (dim <= 0) { + throw std::runtime_error( + FormatError("consteval", "数组维度必须是正整数")); + } + return dim; +} + +std::vector ConstEvaluator::EvaluateConstInitList( + SysYParser::ConstInitValContext& init, SymbolDataType elem_type, + const std::vector& dims) const { + if (elem_type != DataType::Int && elem_type != DataType::Float && + elem_type != DataType::Bool) { + throw std::runtime_error( + FormatError("consteval", "仅支持标量类型的常量初始化")); + } + + ConstEvalVisitor visitor(table_, ctx_); + if (dims.empty()) { + return {EvaluateScalarInit(init, elem_type, visitor)}; + } + + const size_t total = Product(dims, 0); + std::vector flattened(total, MakeZeroValue(elem_type)); + FillConstArrayObject(init, 0, 0, total, dims, elem_type, flattened, visitor); + return flattened; +} diff --git a/src/sem/Sema.cpp b/src/sem/Sema.cpp index 745374c..3b46e48 100644 --- a/src/sem/Sema.cpp +++ b/src/sem/Sema.cpp @@ -1,83 +1,352 @@ #include "sem/Sema.h" #include +#include +#include #include #include +#include +#include #include "SysYBaseVisitor.h" -#include "sem/SymbolTable.h" +#include "sem/ConstEval.h" #include "utils/Log.h" namespace { -std::string GetLValueName(SysYParser::LValueContext& lvalue) { - if (!lvalue.ID()) { - throw std::runtime_error(FormatError("sema", "非法左值")); +using DataType = SymbolDataType; + +std::string DataTypeName(DataType ty) { + switch (ty) { + case DataType::Void: + return "void"; + case DataType::Int: + return "int"; + case DataType::Float: + return "float"; + case DataType::Bool: + return "bool"; + case DataType::Unknown: + return "unknown"; + } + return "unknown"; +} + +bool IsNumericType(DataType ty) { + return ty == DataType::Int || ty == DataType::Float || ty == DataType::Bool; +} + +bool IsScalarType(DataType ty) { + return ty == DataType::Int || ty == DataType::Float || ty == DataType::Bool; +} + +bool CanAssign(DataType dst, DataType src) { + if (dst == src) { + return true; + } + return IsNumericType(dst) && IsNumericType(src); +} + +DataType ParseBType(SysYParser::BTypeContext& btype) { + if (btype.INT()) { + return DataType::Int; + } + if (btype.FLOAT()) { + return DataType::Float; + } + throw std::runtime_error(FormatError("sema", "非法基础类型")); +} + +DataType ParseFuncType(SysYParser::FuncTypeContext& func_type) { + if (func_type.VOID()) { + return DataType::Void; + } + if (func_type.INT()) { + return DataType::Int; + } + if (func_type.FLOAT()) { + return DataType::Float; + } + throw std::runtime_error(FormatError("sema", "非法函数返回类型")); +} + +std::string RequireIdent(antlr4::tree::TerminalNode* ident, + const std::string& message) { + if (!ident) { + throw std::runtime_error(FormatError("sema", message)); } - return lvalue.ID()->getText(); + return ident->getText(); } +struct LValueInfo { + const SymbolEntry* symbol = nullptr; + DataType value_type = DataType::Unknown; + size_t index_count = 0; + bool fully_indexed = true; +}; + class SemaVisitor final : public SysYBaseVisitor { public: std::any visitCompUnit(SysYParser::CompUnitContext* ctx) override { if (!ctx) { throw std::runtime_error(FormatError("sema", "缺少编译单元")); } - auto* func = ctx->funcDef(); - if (!func || !func->blockStmt()) { - throw std::runtime_error(FormatError("sema", "缺少 main 函数定义")); + + // 先注册所有函数签名,支持函数前向调用与递归调用。 + for (auto* func : ctx->funcDef()) { + if (func) { + PredeclareFunction(*func); + } } - if (!func->ID() || func->ID()->getText() != "main") { + + // 再按源码顺序执行语义检查。 + for (auto* child : ctx->children) { + if (auto* decl = dynamic_cast(child)) { + decl->accept(this); + continue; + } + if (auto* func = dynamic_cast(child)) { + func->accept(this); + } + } + + if (!has_main_function_) { throw std::runtime_error(FormatError("sema", "缺少 main 函数定义")); } - func->accept(this); - if (!seen_return_) { + return {}; + } + + std::any visitDecl(SysYParser::DeclContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法声明节点")); + } + if (ctx->constDecl()) { + ctx->constDecl()->accept(this); + return {}; + } + if (ctx->varDecl()) { + ctx->varDecl()->accept(this); + return {}; + } + throw std::runtime_error(FormatError("sema", "暂不支持的声明类型")); + } + + std::any visitConstDecl(SysYParser::ConstDeclContext* ctx) override { + if (!ctx || !ctx->bType()) { + throw std::runtime_error(FormatError("sema", "非法常量声明")); + } + const DataType saved_type = current_decl_type_; + const bool saved_const = current_decl_is_const_; + + current_decl_type_ = ParseBType(*ctx->bType()); + current_decl_is_const_ = true; + for (auto* def : ctx->constDef()) { + if (!def) { + throw std::runtime_error(FormatError("sema", "常量定义为空")); + } + def->accept(this); + } + + current_decl_type_ = saved_type; + current_decl_is_const_ = saved_const; + return {}; + } + + std::any visitVarDecl(SysYParser::VarDeclContext* ctx) override { + if (!ctx || !ctx->bType()) { + throw std::runtime_error(FormatError("sema", "非法变量声明")); + } + const DataType saved_type = current_decl_type_; + const bool saved_const = current_decl_is_const_; + + current_decl_type_ = ParseBType(*ctx->bType()); + current_decl_is_const_ = false; + for (auto* def : ctx->varDef()) { + if (!def) { + throw std::runtime_error(FormatError("sema", "变量定义为空")); + } + def->accept(this); + } + + current_decl_type_ = saved_type; + current_decl_is_const_ = saved_const; + return {}; + } + + std::any visitConstDef(SysYParser::ConstDefContext* ctx) override { + if (!ctx || !ctx->constInitVal()) { + throw std::runtime_error(FormatError("sema", "非法常量定义")); + } + const std::string name = RequireIdent(ctx->Ident(), "常量定义缺少名称"); + if (table_.ContainsCurrentScope(name)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + name)); + } + + ConstEvaluator const_evaluator(table_, const_values_); + + std::vector dims; + dims.reserve(ctx->constExp().size()); + for (auto* dim_exp : ctx->constExp()) { + dims.push_back(const_evaluator.EvaluateArrayDim(*dim_exp)); + } + + const std::vector init_values = + const_evaluator.EvaluateConstInitList(*ctx->constInitVal(), + current_decl_type_, dims); + if (init_values.empty()) { throw std::runtime_error( - FormatError("sema", "main 函数必须包含 return 语句")); + FormatError("sema", "常量初始化结果不能为空: " + name)); + } + + const std::vector dims_copy = dims; + + SymbolEntry symbol; + symbol.name = name; + symbol.kind = SymbolKind::Constant; + symbol.data_type = current_decl_type_; + symbol.is_const = true; + symbol.is_global = (current_function_ == nullptr); + symbol.has_initializer = true; + symbol.is_array = !dims.empty(); + symbol.array_dims = std::move(dims); + if (dims_copy.empty()) { + symbol.has_constexpr_value = true; + if (current_decl_type_ == DataType::Float) { + symbol.const_float_value = init_values.front().AsFloat(); + } else { + symbol.const_int_value = init_values.front().AsInt(); + } + } else { + if (current_decl_type_ == DataType::Float) { + symbol.const_float_init.reserve(init_values.size()); + for (const auto& value : init_values) { + symbol.const_float_init.push_back(value.AsFloat()); + } + } else { + symbol.const_int_init.reserve(init_values.size()); + for (const auto& value : init_values) { + symbol.const_int_init.push_back(value.AsInt()); + } + } + } + symbol.decl_ctx = ctx; + + SymbolEntry* stable_symbol = sema_.RegisterSymbol(std::move(symbol)); + if (!table_.Insert(stable_symbol)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + name)); + } + + if (dims_copy.empty()) { + if (!const_values_.DefineScalar(name, init_values.front())) { + throw std::runtime_error( + FormatError("sema", "常量环境重复定义: " + name)); + } + } else { + ConstArrayValue array_value; + array_value.elem_type = current_decl_type_; + array_value.dims = dims_copy; + array_value.elements = init_values; + if (!const_values_.DefineArray(name, std::move(array_value))) { + throw std::runtime_error( + FormatError("sema", "常量环境重复定义: " + name)); + } + } + + return {}; + } + + std::any visitVarDef(SysYParser::VarDefContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法变量定义")); + } + const std::string name = RequireIdent(ctx->Ident(), "变量定义缺少名称"); + if (table_.ContainsCurrentScope(name)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + name)); + } + + std::vector dims; + dims.reserve(ctx->constExp().size()); + ConstEvaluator const_evaluator(table_, const_values_); + for (auto* dim_exp : ctx->constExp()) { + dims.push_back(const_evaluator.EvaluateArrayDim(*dim_exp)); + } + + SymbolEntry symbol; + symbol.name = name; + symbol.kind = current_decl_is_const_ ? SymbolKind::Constant + : SymbolKind::Variable; + symbol.data_type = current_decl_type_; + symbol.is_const = current_decl_is_const_; + symbol.is_global = (current_function_ == nullptr); + symbol.has_initializer = (ctx->initVal() != nullptr); + symbol.is_array = !dims.empty(); + symbol.array_dims = std::move(dims); + symbol.decl_ctx = ctx; + + SymbolEntry* stable_symbol = sema_.RegisterSymbol(std::move(symbol)); + if (!table_.Insert(stable_symbol)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + name)); + } + + if (ctx->initVal()) { + CheckInitValue(*ctx->initVal(), current_decl_type_); } return {}; } std::any visitFuncDef(SysYParser::FuncDefContext* ctx) override { - if (!ctx || !ctx->blockStmt()) { - throw std::runtime_error(FormatError("sema", "缺少 main 函数定义")); + if (!ctx || !ctx->Ident() || !ctx->block()) { + throw std::runtime_error(FormatError("sema", "非法函数定义")); } - if (!ctx->funcType() || !ctx->funcType()->INT()) { - throw std::runtime_error(FormatError("sema", "当前仅支持 int main")); + const std::string name = ctx->Ident()->getText(); + const SymbolEntry* symbol = table_.LookupCurrentScope(name); + if (!symbol || symbol->kind != SymbolKind::Function) { + throw std::runtime_error(FormatError("sema", "函数签名未注册: " + name)); } - const auto& items = ctx->blockStmt()->blockItem(); - if (items.empty()) { + + const SymbolEntry* saved_function = current_function_; + const bool saved_has_return = current_function_has_return_; + + current_function_ = symbol; + current_function_has_return_ = false; + + BuildPendingParams(*ctx); + ctx->block()->accept(this); + + if (current_function_->data_type != DataType::Void && + !current_function_has_return_) { throw std::runtime_error( - FormatError("sema", "main 函数不能为空,且必须以 return 结束")); + FormatError("sema", "非 void 函数缺少 return: " + name)); } - ctx->blockStmt()->accept(this); + + current_function_ = saved_function; + current_function_has_return_ = saved_has_return; return {}; } - std::any visitBlockStmt(SysYParser::BlockStmtContext* ctx) override { + std::any visitBlock(SysYParser::BlockContext* ctx) override { if (!ctx) { - throw std::runtime_error(FormatError("sema", "缺少语句块")); + throw std::runtime_error(FormatError("sema", "非法语句块")); } - const auto& items = ctx->blockItem(); - for (size_t i = 0; i < items.size(); ++i) { - auto* item = items[i]; - if (!item) { - continue; - } - if (seen_return_) { - throw std::runtime_error( - FormatError("sema", "return 必须是 main 函数中的最后一条语句")); + + table_.EnterScope(); + const_values_.EnterScope(); + InjectPendingParamsIntoCurrentScope(); + + for (auto* item : ctx->blockItem()) { + if (item) { + item->accept(this); } - current_item_index_ = i; - total_items_ = items.size(); - item->accept(this); } + + const_values_.ExitScope(); + table_.ExitScope(); return {}; } std::any visitBlockItem(SysYParser::BlockItemContext* ctx) override { if (!ctx) { - throw std::runtime_error(FormatError("sema", "暂不支持的语句或声明")); + throw std::runtime_error(FormatError("sema", "非法 blockItem")); } if (ctx->decl()) { ctx->decl()->accept(this); @@ -87,108 +356,566 @@ class SemaVisitor final : public SysYBaseVisitor { ctx->stmt()->accept(this); return {}; } - throw std::runtime_error(FormatError("sema", "暂不支持的语句或声明")); + throw std::runtime_error(FormatError("sema", "非法 blockItem 结构")); } - std::any visitDecl(SysYParser::DeclContext* ctx) override { + std::any visitStmt(SysYParser::StmtContext* ctx) override { if (!ctx) { - throw std::runtime_error(FormatError("sema", "非法变量声明")); + throw std::runtime_error(FormatError("sema", "缺少语句")); + } + + if (ctx->ASSIGN()) { + if (!ctx->lVal() || !ctx->exp()) { + throw std::runtime_error(FormatError("sema", "非法赋值语句")); + } + LValueInfo lvalue = ResolveLValue(*ctx->lVal()); + if (lvalue.symbol->is_const) { + throw std::runtime_error( + FormatError("sema", "不能给常量赋值: " + lvalue.symbol->name)); + } + if (lvalue.symbol->is_array && !lvalue.fully_indexed) { + throw std::runtime_error( + FormatError("sema", "数组变量需要完整下标后才能赋值: " + + lvalue.symbol->name)); + } + DataType rhs_ty = EvalType(*ctx->exp()); + EnsureAssignable("赋值", lvalue.value_type, rhs_ty); + return {}; } - if (!ctx->btype() || !ctx->btype()->INT()) { - throw std::runtime_error(FormatError("sema", "当前仅支持局部 int 变量声明")); + + if (ctx->RETURN()) { + if (!current_function_) { + throw std::runtime_error(FormatError("sema", "return 不在函数体内")); + } + if (current_function_->data_type == DataType::Void) { + if (ctx->exp()) { + throw std::runtime_error( + FormatError("sema", "void 函数不应返回表达式")); + } + } else { + if (!ctx->exp()) { + throw std::runtime_error( + FormatError("sema", "非 void 函数必须返回表达式")); + } + DataType ret_ty = EvalType(*ctx->exp()); + EnsureAssignable("return", current_function_->data_type, ret_ty); + } + current_function_has_return_ = true; + return {}; } - auto* var_def = ctx->varDef(); - if (!var_def || !var_def->lValue()) { - throw std::runtime_error(FormatError("sema", "非法变量声明")); + + if (ctx->BREAK()) { + if (loop_depth_ <= 0) { + throw std::runtime_error( + FormatError("sema", "break 只能出现在循环体内")); + } + return {}; } - const std::string name = GetLValueName(*var_def->lValue()); - if (table_.Contains(name)) { - throw std::runtime_error(FormatError("sema", "重复定义变量: " + name)); + + if (ctx->CONTINUE()) { + if (loop_depth_ <= 0) { + throw std::runtime_error( + FormatError("sema", "continue 只能出现在循环体内")); + } + return {}; } - if (auto* init = var_def->initValue()) { - if (!init->exp()) { - throw std::runtime_error(FormatError("sema", "当前不支持聚合初始化")); + + if (ctx->IF()) { + if (!ctx->cond() || ctx->stmt().empty()) { + throw std::runtime_error(FormatError("sema", "非法 if 语句")); } - init->exp()->accept(this); + DataType cond_ty = EvalType(*ctx->cond()); + if (!IsScalarType(cond_ty)) { + throw std::runtime_error( + FormatError("sema", "if 条件表达式必须是标量类型")); + } + ctx->stmt(0)->accept(this); + if (ctx->ELSE()) { + if (ctx->stmt().size() < 2 || !ctx->stmt(1)) { + throw std::runtime_error(FormatError("sema", "非法 else 分支")); + } + ctx->stmt(1)->accept(this); + } + return {}; + } + + if (ctx->WHILE()) { + if (!ctx->cond() || ctx->stmt().empty() || !ctx->stmt(0)) { + throw std::runtime_error(FormatError("sema", "非法 while 语句")); + } + DataType cond_ty = EvalType(*ctx->cond()); + if (!IsScalarType(cond_ty)) { + throw std::runtime_error( + FormatError("sema", "while 条件表达式必须是标量类型")); + } + ++loop_depth_; + ctx->stmt(0)->accept(this); + --loop_depth_; + return {}; + } + + if (ctx->block()) { + ctx->block()->accept(this); + return {}; + } + + // exp? ';',包含空语句与表达式语句。 + if (ctx->exp()) { + EvalType(*ctx->exp()); } - table_.Add(name, var_def); return {}; } - std::any visitStmt(SysYParser::StmtContext* ctx) override { - if (!ctx || !ctx->returnStmt()) { - throw std::runtime_error(FormatError("sema", "暂不支持的语句或声明")); + std::any visitExp(SysYParser::ExpContext* ctx) override { + if (!ctx || !ctx->addExp()) { + throw std::runtime_error(FormatError("sema", "非法表达式")); } - ctx->returnStmt()->accept(this); - return {}; + return EvalType(*ctx->addExp()); + } + + std::any visitCond(SysYParser::CondContext* ctx) override { + if (!ctx || !ctx->lOrExp()) { + throw std::runtime_error(FormatError("sema", "非法条件表达式")); + } + return EvalType(*ctx->lOrExp()); + } + + std::any visitLVal(SysYParser::LValContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法左值")); + } + LValueInfo info = ResolveLValue(*ctx); + if (info.symbol->is_array && !info.fully_indexed) { + // 数组名/数组切片在当前最小实现中视为非常量标量类型, + // 仅允许作为数组形参传递,不允许参与算术表达式。 + return DataType::Unknown; + } + return info.value_type; + } + + std::any visitPrimaryExp(SysYParser::PrimaryExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 primaryExp")); + } + if (ctx->exp()) { + return EvalType(*ctx->exp()); + } + if (ctx->lVal()) { + return EvalType(*ctx->lVal()); + } + if (ctx->number()) { + return EvalType(*ctx->number()); + } + throw std::runtime_error(FormatError("sema", "无法识别的 primaryExp")); + } + + std::any visitNumber(SysYParser::NumberContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 number")); + } + if (ctx->IntConst()) { + return DataType::Int; + } + if (ctx->FloatConst()) { + return DataType::Float; + } + throw std::runtime_error(FormatError("sema", "非法数字常量")); } - std::any visitReturnStmt(SysYParser::ReturnStmtContext* ctx) override { - if (!ctx || !ctx->exp()) { - throw std::runtime_error(FormatError("sema", "return 缺少表达式")); + std::any visitUnaryExp(SysYParser::UnaryExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 unaryExp")); + } + + if (ctx->primaryExp()) { + return EvalType(*ctx->primaryExp()); } - ctx->exp()->accept(this); - seen_return_ = true; - if (current_item_index_ + 1 != total_items_) { + + if (ctx->Ident()) { + const std::string callee_name = ctx->Ident()->getText(); + const SymbolEntry* callee = table_.Lookup(callee_name); + if (!callee || callee->kind != SymbolKind::Function) { + throw std::runtime_error( + FormatError("sema", "调用了未定义函数: " + callee_name)); + } + + std::vector args; + if (ctx->funcRParams()) { + args = ctx->funcRParams()->exp(); + } + + if (args.size() != callee->param_types.size()) { + throw std::runtime_error( + FormatError("sema", "函数参数数量不匹配: " + callee_name)); + } + + for (size_t i = 0; i < args.size(); ++i) { + DataType arg_ty = EvalType(*args[i]); + const bool need_array = + i < callee->param_is_array.size() && callee->param_is_array[i]; + if (need_array) { + if (arg_ty != DataType::Unknown) { + throw std::runtime_error( + FormatError("sema", + "数组形参需要数组实参: " + callee_name)); + } + continue; + } + if (arg_ty == DataType::Unknown) { + throw std::runtime_error( + FormatError("sema", + "标量形参不接受数组实参: " + callee_name)); + } + EnsureAssignable("函数参数", callee->param_types[i], arg_ty); + } + + sema_.BindCallUse(ctx, callee); + return callee->data_type; + } + + if (ctx->unaryOp() && ctx->unaryExp()) { + const DataType operand_ty = EvalType(*ctx->unaryExp()); + if (ctx->unaryOp()->NOT()) { + if (!IsScalarType(operand_ty)) { + throw std::runtime_error( + FormatError("sema", "逻辑非运算只支持标量类型")); + } + return DataType::Bool; + } + if (!IsNumericType(operand_ty)) { + throw std::runtime_error( + FormatError("sema", "一元加减只支持数值类型")); + } + return operand_ty == DataType::Float ? DataType::Float : DataType::Int; + } + + throw std::runtime_error(FormatError("sema", "非法 unaryExp 结构")); + } + + std::any visitMulExp(SysYParser::MulExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 mulExp")); + } + if (!ctx->mulExp()) { + return EvalType(*ctx->unaryExp()); + } + + DataType lhs = EvalType(*ctx->mulExp()); + DataType rhs = EvalType(*ctx->unaryExp()); + if (!IsNumericType(lhs) || !IsNumericType(rhs)) { throw std::runtime_error( - FormatError("sema", "return 必须是 main 函数中的最后一条语句")); + FormatError("sema", "乘除模运算只支持数值类型")); } - return {}; + return PromoteArithmetic(lhs, rhs); } - std::any visitParenExp(SysYParser::ParenExpContext* ctx) override { - if (!ctx || !ctx->exp()) { - throw std::runtime_error(FormatError("sema", "非法括号表达式")); + std::any visitAddExp(SysYParser::AddExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 addExp")); } - ctx->exp()->accept(this); - return {}; + if (!ctx->addExp()) { + return EvalType(*ctx->mulExp()); + } + + DataType lhs = EvalType(*ctx->addExp()); + DataType rhs = EvalType(*ctx->mulExp()); + if (!IsNumericType(lhs) || !IsNumericType(rhs)) { + throw std::runtime_error( + FormatError("sema", "加减运算只支持数值类型")); + } + return PromoteArithmetic(lhs, rhs); } - std::any visitVarExp(SysYParser::VarExpContext* ctx) override { - if (!ctx || !ctx->var()) { - throw std::runtime_error(FormatError("sema", "非法变量表达式")); + std::any visitRelExp(SysYParser::RelExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 relExp")); } - ctx->var()->accept(this); - return {}; + if (!ctx->relExp()) { + return EvalType(*ctx->addExp()); + } + + DataType lhs = EvalType(*ctx->relExp()); + DataType rhs = EvalType(*ctx->addExp()); + if (!IsNumericType(lhs) || !IsNumericType(rhs)) { + throw std::runtime_error( + FormatError("sema", "关系比较只支持数值类型")); + } + return DataType::Bool; } - std::any visitNumberExp(SysYParser::NumberExpContext* ctx) override { - if (!ctx || !ctx->number() || !ctx->number()->ILITERAL()) { - throw std::runtime_error(FormatError("sema", "当前仅支持整数字面量")); + std::any visitEqExp(SysYParser::EqExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 eqExp")); } - return {}; + if (!ctx->eqExp()) { + return EvalType(*ctx->relExp()); + } + + DataType lhs = EvalType(*ctx->eqExp()); + DataType rhs = EvalType(*ctx->relExp()); + if (!IsScalarType(lhs) || !IsScalarType(rhs)) { + throw std::runtime_error( + FormatError("sema", "相等比较只支持标量类型")); + } + return DataType::Bool; } - std::any visitAdditiveExp(SysYParser::AdditiveExpContext* ctx) override { - if (!ctx || !ctx->exp(0) || !ctx->exp(1)) { - throw std::runtime_error(FormatError("sema", "暂不支持的表达式形式")); + std::any visitLAndExp(SysYParser::LAndExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 lAndExp")); + } + if (!ctx->lAndExp()) { + return EvalType(*ctx->eqExp()); + } + + DataType lhs = EvalType(*ctx->lAndExp()); + DataType rhs = EvalType(*ctx->eqExp()); + if (!IsScalarType(lhs) || !IsScalarType(rhs)) { + throw std::runtime_error( + FormatError("sema", "逻辑与只支持标量类型")); } - ctx->exp(0)->accept(this); - ctx->exp(1)->accept(this); - return {}; + return DataType::Bool; } - std::any visitVar(SysYParser::VarContext* ctx) override { - if (!ctx || !ctx->ID()) { - throw std::runtime_error(FormatError("sema", "非法变量引用")); + std::any visitLOrExp(SysYParser::LOrExpContext* ctx) override { + if (!ctx) { + throw std::runtime_error(FormatError("sema", "非法 lOrExp")); } - const std::string name = ctx->ID()->getText(); - auto* decl = table_.Lookup(name); - if (!decl) { - throw std::runtime_error(FormatError("sema", "使用了未定义的变量: " + name)); + if (!ctx->lOrExp()) { + return EvalType(*ctx->lAndExp()); } - sema_.BindVarUse(ctx, decl); - return {}; + + DataType lhs = EvalType(*ctx->lOrExp()); + DataType rhs = EvalType(*ctx->lAndExp()); + if (!IsScalarType(lhs) || !IsScalarType(rhs)) { + throw std::runtime_error( + FormatError("sema", "逻辑或只支持标量类型")); + } + return DataType::Bool; + } + + std::any visitConstExp(SysYParser::ConstExpContext* ctx) override { + if (!ctx || !ctx->addExp()) { + throw std::runtime_error(FormatError("sema", "非法 constExp")); + } + DataType ty = EvalType(*ctx->addExp()); + if (!IsNumericType(ty)) { + throw std::runtime_error(FormatError("sema", "constExp 必须是数值类型")); + } + return ty; } SemanticContext TakeSemanticContext() { return std::move(sema_); } private: + struct PendingParam { + std::string name; + DataType type = DataType::Unknown; + bool is_array = false; + std::vector dims; + const antlr4::ParserRuleContext* decl_ctx = nullptr; + }; + + SymbolEntry* PredeclareFunction(SysYParser::FuncDefContext& ctx) { + if (!ctx.funcType() || !ctx.Ident()) { + throw std::runtime_error(FormatError("sema", "非法函数定义")); + } + const std::string name = ctx.Ident()->getText(); + if (table_.ContainsCurrentScope(name)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + name)); + } + + SymbolEntry symbol; + symbol.name = name; + symbol.kind = SymbolKind::Function; + symbol.data_type = ParseFuncType(*ctx.funcType()); + symbol.is_const = true; + symbol.is_global = true; + symbol.decl_ctx = &ctx; + + if (ctx.funcFParams()) { + for (auto* param : ctx.funcFParams()->funcFParam()) { + if (!param || !param->bType()) { + throw std::runtime_error(FormatError("sema", "非法函数形参定义")); + } + symbol.param_types.push_back(ParseBType(*param->bType())); + symbol.param_is_array.push_back(!param->LBRACK().empty()); + } + } + + SymbolEntry* stable_symbol = sema_.RegisterSymbol(std::move(symbol)); + if (!table_.Insert(stable_symbol)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + name)); + } + + if (name == "main") { + has_main_function_ = true; + if (stable_symbol->data_type != DataType::Int) { + throw std::runtime_error(FormatError("sema", "main 函数返回类型必须为 int")); + } + if (!stable_symbol->param_types.empty()) { + throw std::runtime_error(FormatError("sema", "main 函数不应包含形参")); + } + } + + return stable_symbol; + } + + void BuildPendingParams(SysYParser::FuncDefContext& ctx) { + pending_params_.clear(); + inject_params_in_next_block_ = false; + + if (!ctx.funcFParams()) { + return; + } + + for (auto* param : ctx.funcFParams()->funcFParam()) { + if (!param || !param->bType()) { + throw std::runtime_error(FormatError("sema", "非法函数形参定义")); + } + PendingParam info; + info.name = RequireIdent(param->Ident(), "函数形参缺少名称"); + info.type = ParseBType(*param->bType()); + info.is_array = !param->LBRACK().empty(); + info.decl_ctx = param; + + if (info.is_array) { + info.dims.push_back(-1); + for (auto* dim_exp : param->exp()) { + DataType dim_ty = EvalType(*dim_exp); + if (!IsNumericType(dim_ty)) { + throw std::runtime_error( + FormatError("sema", "函数形参数组维度必须是数值类型表达式")); + } + info.dims.push_back(-1); + } + } + + pending_params_.push_back(std::move(info)); + } + + inject_params_in_next_block_ = true; + } + + void InjectPendingParamsIntoCurrentScope() { + if (!inject_params_in_next_block_) { + return; + } + for (const auto& param : pending_params_) { + SymbolEntry symbol; + symbol.name = param.name; + symbol.kind = SymbolKind::Parameter; + symbol.data_type = param.type; + symbol.is_const = false; + symbol.is_global = false; + symbol.is_array = param.is_array; + symbol.array_dims = param.dims; + symbol.decl_ctx = param.decl_ctx; + + SymbolEntry* stable_symbol = sema_.RegisterSymbol(std::move(symbol)); + if (!table_.Insert(stable_symbol)) { + throw std::runtime_error(FormatError("sema", "重复定义符号: " + + param.name)); + } + } + + pending_params_.clear(); + inject_params_in_next_block_ = false; + } + + DataType EvalType(antlr4::ParserRuleContext& ctx) { + std::any result = ctx.accept(this); + if (!result.has_value()) { + return DataType::Unknown; + } + try { + return std::any_cast(result); + } catch (const std::bad_any_cast&) { + throw std::runtime_error(FormatError("sema", "表达式类型推导失败")); + } + } + + void EnsureAssignable(const std::string& scene, DataType dst, DataType src) { + if (!CanAssign(dst, src)) { + throw std::runtime_error(FormatError( + "sema", scene + " 类型不匹配: 期望 " + DataTypeName(dst) + + ",实际 " + DataTypeName(src))); + } + } + + DataType PromoteArithmetic(DataType lhs, DataType rhs) { + if (lhs == DataType::Float || rhs == DataType::Float) { + return DataType::Float; + } + return DataType::Int; + } + + LValueInfo ResolveLValue(SysYParser::LValContext& ctx) { + const std::string name = RequireIdent(ctx.Ident(), "左值缺少标识符"); + const SymbolEntry* symbol = table_.Lookup(name); + if (!symbol) { + throw std::runtime_error(FormatError("sema", "使用了未定义的变量: " + name)); + } + if (symbol->kind == SymbolKind::Function) { + throw std::runtime_error( + FormatError("sema", "函数名不能作为左值: " + name)); + } + + const size_t index_count = ctx.exp().size(); + for (auto* index_exp : ctx.exp()) { + DataType index_ty = EvalType(*index_exp); + if (!IsNumericType(index_ty)) { + throw std::runtime_error( + FormatError("sema", "数组下标必须是数值类型: " + name)); + } + } + + if (index_count > 0 && !symbol->is_array) { + throw std::runtime_error( + FormatError("sema", "普通变量不能使用下标: " + name)); + } + if (symbol->is_array && index_count > symbol->array_dims.size()) { + throw std::runtime_error( + FormatError("sema", "数组下标维度越界: " + name)); + } + + sema_.BindLValUse(&ctx, symbol); + + LValueInfo info; + info.symbol = symbol; + info.value_type = symbol->data_type; + info.index_count = index_count; + info.fully_indexed = !symbol->is_array || + index_count == symbol->array_dims.size(); + return info; + } + + void CheckInitValue(SysYParser::InitValContext& ctx, DataType expected_type) { + if (ctx.exp()) { + DataType init_ty = EvalType(*ctx.exp()); + EnsureAssignable("变量初始化", expected_type, init_ty); + return; + } + for (auto* nested : ctx.initVal()) { + if (nested) { + CheckInitValue(*nested, expected_type); + } + } + } + SymbolTable table_; + ConstEvalContext const_values_; SemanticContext sema_; - bool seen_return_ = false; - size_t current_item_index_ = 0; - size_t total_items_ = 0; + DataType current_decl_type_ = DataType::Unknown; + bool current_decl_is_const_ = false; + int loop_depth_ = 0; + bool has_main_function_ = false; + + const SymbolEntry* current_function_ = nullptr; + bool current_function_has_return_ = false; + + bool inject_params_in_next_block_ = false; + std::vector pending_params_; }; } // namespace diff --git a/src/sem/SymbolTable.cpp b/src/sem/SymbolTable.cpp index ffeea89..47b5112 100644 --- a/src/sem/SymbolTable.cpp +++ b/src/sem/SymbolTable.cpp @@ -2,16 +2,54 @@ #include "sem/SymbolTable.h" -void SymbolTable::Add(const std::string& name, - SysYParser::VarDefContext* decl) { - table_[name] = decl; +#include + +SymbolTable::SymbolTable() { EnterScope(); } + +void SymbolTable::EnterScope() { scopes_.emplace_back(); } + +void SymbolTable::ExitScope() { + if (scopes_.size() <= 1) { + throw std::runtime_error("symbol table scope underflow"); + } + scopes_.pop_back(); +} + +bool SymbolTable::Insert(const SymbolEntry* symbol) { + if (!symbol) { + return false; + } + if (scopes_.empty()) { + EnterScope(); + } + auto& current = scopes_.back(); + auto [it, inserted] = current.emplace(symbol->name, symbol); + return inserted; } bool SymbolTable::Contains(const std::string& name) const { - return table_.find(name) != table_.end(); + return Lookup(name) != nullptr; +} + +bool SymbolTable::ContainsCurrentScope(const std::string& name) const { + return LookupCurrentScope(name) != nullptr; +} + +const SymbolEntry* SymbolTable::Lookup(const std::string& name) const { + for (auto it = scopes_.rbegin(); it != scopes_.rend(); ++it) { + auto symbol_it = it->find(name); + if (symbol_it != it->end()) { + return symbol_it->second; + } + } + return nullptr; } -SysYParser::VarDefContext* SymbolTable::Lookup(const std::string& name) const { - auto it = table_.find(name); - return it == table_.end() ? nullptr : it->second; +const SymbolEntry* SymbolTable::LookupCurrentScope( + const std::string& name) const { + if (scopes_.empty()) { + return nullptr; + } + auto it = scopes_.back().find(name); + return it == scopes_.back().end() ? nullptr : it->second; } diff --git a/work-summary-2026-04-02.md b/work-summary-2026-04-02.md new file mode 100644 index 0000000..73e5119 --- /dev/null +++ b/work-summary-2026-04-02.md @@ -0,0 +1,95 @@ +# 今日工作总结(2026-04-02) + +## 1. 今天做了什么 + +- 核查语义分析实现与当前 `SysY.g4` 的兼容性。 +- 重构语义分析流程,使其对齐当前语法节点(如 `block`、`stmt`、`lVal` 等)。 +- 实现并接入编译期常量求值模块(`ConstEval`),覆盖常量表达式与 const 初始化列表展平。 +- 将符号表升级为 IR 导向的 `SymbolEntry` 结构,并支持作用域查找。 +- 增加语义绑定上下文,支持左值使用点与函数调用使用点绑定。 +- 分别验证了子模块构建状态与完整 IRGen 链路构建状态。 +- 定位了为何 `sem` 目标通过但全量构建失败。 + +## 2. 已实现内容 + +### 语义分析(`sema`) + +- 函数预声明与函数体语义检查流程。 +- 赋值、返回、条件表达式、一元/二元运算的类型检查。 +- 变量/常量/形参的作用域检查。 +- `break` / `continue` 的循环上下文合法性检查。 +- `main` 函数存在性与签名检查。 + +### 符号表 + +- 作用域栈(`EnterScope` / `ExitScope`)。 +- 当前作用域与嵌套作用域查找逻辑。 +- IR 导向符号信息(`kind`、`data_type`、数组维度、常量初始化载荷)。 + +### ConstEval + +- 常量标量求值(支持 int/float/bool 转换)。 +- 常量表达式访问器求值。 +- 数组维度合法性校验(必须为整数且大于 0)。 +- const 初始化列表展平(支持嵌套花括号和零填充)。 + +## 3. 今日验证与排查结果 + +- `cmake --build build --target sem -j4`:通过。 +- `cmake --build build --target irgen -j4`:失败。 + +已定位根因: + +- `include/ir/IR.h` 与 `src/ir/*.cpp` 尚未完全对齐(函数签名不一致、重复定义、内联方法中的不完整类型使用)。 +- `IRGen` 仍在使用旧 parser 上下文与旧语义接口(`ResolveVarUse`),而当前 sema 接口是 `ResolveLValUse` / `ResolveCallUse`。 + +## 4. 今天修改的文件 + +### 核心代码变更 + +- `include/sem/Sema.h` +- `include/sem/SymbolTable.h` +- `include/sem/ConstEval.h`(新增) +- `src/sem/Sema.cpp` +- `src/sem/SymbolTable.cpp` +- `src/sem/ConstEval.cpp` + +### 观察到的其他仓库变更 + +- `scripts/lab1_build_test.sh`(文件权限位变化) +- `介绍.md`(新增) +- Lab1 输出文件变更: + - `output/lab1/01_mm2.tree` + - `output/lab1/02_mv3.tree` + - `output/lab1/03_sort1.tree` + - `output/lab1/05_arr_defn4.tree` + - `output/lab1/09_func_defn.tree` + - `output/lab1/11_add2.tree` + - `output/lab1/13_sub2.tree` + - `output/lab1/15_graph_coloring.tree` + - `output/lab1/2025-MYO-20.tree` + - `output/lab1/22_matrix_multiply.tree` + - `output/lab1/25_scope3.tree` + - `output/lab1/29_break.tree` + - `output/lab1/36_op_priority2.tree` + - `output/lab1/95_float.tree` + - `output/lab1/fft0.tree` + - `output/lab1/gameoflife-oscillator.tree` + - `output/lab1/if-combine3.tree` + - `output/lab1/large_loop_array_2.tree` + - `output/lab1/simple_add.tree` + - `output/lab1/transpose0.tree` + - `output/lab1/vector_mul3.tree` + +## 5. 当前阻塞点 + +- IR 核心实现尚未与最新 `IR.h` 契约完全同步。 +- IRGen 适配层尚未迁移到当前 grammar / API 契约。 +- `include/sem/ConstEval.h` 中目前存在错误 include 记号(``),在全链路稳定前需要修复。 + +## 6. 下一步建议 + +1. 按 `include/ir/IR.h` 逐项对齐 `src/ir/BasicBlock.cpp`、`src/ir/Function.cpp`、`src/ir/Module.cpp`。 +2. 将 `IR.h` 中依赖完整 `BasicBlock` / `Function` 类型的高风险内联方法迁移到 `.cpp`(如有必要)。 +3. 迁移 IRGen 访问器与语义绑定调用到当前 parser 与 sema API。 +4. 重新执行全量构建,再跑 `lab1` / `lab2` 脚本做端到端验证。 diff --git a/介绍.md b/介绍.md new file mode 100644 index 0000000..6562a2f --- /dev/null +++ b/介绍.md @@ -0,0 +1,215 @@ +# 项目目录与文件说明(nudt-compiler-cpp) + +本文用于快速理解本仓库中各目录、子模块和关键文件的职责,方便 Lab1-Lab6 分工协作与联调。 + +## 1. 项目总体结构 + +仓库采用典型的 C++ 工程布局: + +- include:头文件,定义模块对外接口 +- src:源文件,给出具体实现 +- doc:课程实验说明文档 +- test:测试输入输出用例 +- scripts:自动化验证脚本 +- third_party:第三方依赖(ANTLR jar 与 C++ runtime) +- sylib:运行时库(评测常用) +- output:示例输出(当前主要是 Lab1 语法树结果) + +## 2. 根目录关键文件 + +### CMakeLists.txt + +根构建入口,负责: + +- 设置 C++17 与编译选项 +- 配置可执行文件输出路径(build/bin) +- 配置 ANTLR 生成目录(build/generated/antlr4) +- 构建 third_party 下的 antlr4 runtime 静态库 +- 进入 src 子目录继续构建 + +### README.md + +项目总说明与实验流程文档,包含: + +- Lab1-Lab6 任务定位 +- 环境依赖安装 +- Lexer/Parser 生成命令 +- parse-only 与全量构建方式 +- verify_ir 与 verify_asm 的验证方式 + +## 3. include 目录(接口层) + +include 下每个子目录一般对应 src 同名实现目录。 + +### include/frontend + +- AntlrDriver.h:封装词法/语法分析驱动,输入源文件得到 ANTLR 语法树 +- SyntaxTreePrinter.h:语法树打印接口(Lab1 主要使用) + +### include/sem + +- Sema.h:语义分析入口与语义上下文结构 +- SymbolTable.h:符号表接口与符号条目定义(你当前负责的核心) + +### include/ir + +- IR.h:IR 核心设计接口(Type、Value、Instruction、BasicBlock、Function、Module、IRBuilder 等) +- IR_org.h:历史/参考版本,通常不作为当前主实现接口 +- utils.h:IR 相关工具定义 + +### include/irgen + +- IRGen.h:语法树到 IR 的生成器接口,连接 sem 与 ir + +### include/mir + +- MIR.h:机器中间表示与后端流程接口(Lowering、RegAlloc、AsmPrinter 等) + +### include/utils + +- CLI.h:命令行参数解析 +- Log.h:统一错误与日志输出工具 + +## 4. src 目录(实现层) + +### src/main.cpp + +编译器主流程入口,串联如下阶段: + +1. 解析命令行参数 +2. 前端解析得到语法树 +3. 调用 sem 语义分析 +4. 调用 irgen 生成 IR +5. 可选:调用 mir 生成汇编 + +说明:在 COMPILER_PARSE_ONLY=ON 时,仅保留前端语法树链路。 + +### src/antlr4 + +- SysY.g4:SysY 词法与语法规则定义 +- .antlr:ANTLR 辅助文件目录 + +这是前端的语法来源,Lab1 和 Lab2 都会依赖它。 + +### src/frontend + +- AntlrDriver.cpp:ANTLR 解析流程实现 +- SyntaxTreePrinter.cpp:语法树打印实现 +- CMakeLists.txt:frontend 模块构建脚本 + +### src/sem + +- Sema.cpp:语义检查实现(名字绑定、合法性检查等) +- SymbolTable.cpp:符号表实现(作用域、插入、查找等) +- ConstEval.cpp:常量求值相关逻辑 +- CMakeLists.txt:sem 模块构建脚本 + +### src/ir + +IR 数据结构与构建器的实现目录: + +- Type.cpp:类型系统 +- Value.cpp:Value 与 use-def 基础 +- Instruction.cpp:指令实现 +- BasicBlock.cpp:基本块 +- Function.cpp:函数 +- Module.cpp:模块 +- IRBuilder.cpp:IR 构建辅助接口 +- IRPrinter.cpp:IR 文本输出 +- Context.cpp:IR 上下文(常量池、临时名等) +- GlobalValue.cpp:全局值实现 + +子目录: + +- analysis:中端分析(如 DominatorTree、LoopInfo) +- passes:中端优化 pass(如 Mem2Reg、DCE、CSE、ConstProp、CFGSimplify) + +### src/irgen + +语法树到 IR 的翻译实现: + +- IRGenDriver.cpp:IR 生成入口 +- IRGenFunc.cpp:函数相关生成 +- IRGenDecl.cpp:声明相关生成 +- IRGenStmt.cpp:语句相关生成 +- IRGenExp.cpp:表达式相关生成 + +### src/mir + +IR 到机器表示/汇编的后端流程实现: + +- Lowering.cpp:从 IR 降到 MIR +- RegAlloc.cpp:寄存器分配 +- FrameLowering.cpp:栈帧处理 +- AsmPrinter.cpp:汇编输出 +- MIRContext.cpp、MIRFunction.cpp、MIRBasicBlock.cpp、MIRInstr.cpp、Register.cpp:MIR 核心结构 + +子目录: + +- passes:后端 pass(例如 Peephole) + +### src/utils + +- CLI.cpp:命令行参数逻辑 +- Log.cpp:错误格式化与打印 + +## 5. doc 目录(实验文档) + +- Lab1-语法树构建.md:Lab1 指南 +- Lab2-中间表示生成.md:Lab2 指南 +- Lab3-Lab6 文档:后续阶段说明 +- images:README 与文档中的配图 + +## 6. test 目录(测试用例) + +- test/test_case/functional:功能正确性用例 +- test/test_case/performance:性能类/规模类用例 + +每个用例通常有: + +- .sy:SysY 源程序 +- .in:输入(可选) +- .out:期望输出 + +## 7. scripts 目录(自动化验证) + +- lab1_build_test.sh:Lab1 构建/测试辅助脚本 +- lab2_build_test.sh:Lab2 构建/测试辅助脚本 +- verify_ir.sh:IR 链路验证脚本(可运行并对比输出) +- verify_asm.sh:汇编链路验证脚本(可运行并对比输出) + +## 8. third_party 目录(外部依赖) + +- antlr-4.13.2-complete.jar:ANTLR 工具 +- antlr4-runtime-4.13.2:ANTLR C++ runtime 源码与 CMake + +## 9. sylib 目录(运行时库) + +- sylib.c +- sylib.h + +用于编译与运行 SysY 程序时提供运行时支持函数。 + +## 10. output 目录(阶段产物示例) + +当前可见 output/lab1 下的 .tree 文件,主要是语法树输出结果样例。 + +注意:正常开发与验证时,实际构建产物通常在 build 目录,不依赖 output 目录作为输入。 + +## 11. 模块依赖关系(简图) + +前端 frontend 输出语法树,交给 sem 做语义绑定,再由 irgen 生成 ir,最后 mir 负责后端。 + +- frontend -> sem -> irgen -> mir +- utils 被多个模块复用 +- ir 是 irgen 与 mir 的共同基础 + +## 12. 对你当前分工(符号表设计)的定位 + +你主要工作在 include/sem 与 src/sem: + +- 设计 SymbolEntry 与 SymbolTable 的接口和作用域规则 +- 让 Sema 输出可被 IR 生成阶段直接消费的语义绑定结果 +- 与 include/ir/IR.h 的实体类型(Type、Value、Function)对接 + +这样可以实现 IR 导向设计:符号表条目直接关联 IR 实体句柄,后续 IR 生成同学只需按该契约回填与读取。