tea/run.sh parse-one tea/testdata/dict.tea 0 tea_module - 0 Op_Newline None 1 module_item var 0 Expr_Name var 1 name_type_list d1 0 name_type d1 0 Expr_Name d1 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_Newline None 2 Op_RBrace None 4 end_outer None 0 Op_Newline None 2 module_item var 0 Expr_Name var 1 name_type_list d2 0 name_type d2 0 Expr_Name d2 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_RBrace None 4 end_outer None 0 Op_Newline None 3 module_item var 0 Expr_Name var 1 name_type_list d3 0 name_type d3 0 Expr_Name d3 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:33 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:34 val:bob)] multiline: F ) 2 Right_SingleQuote ' 2 Op_RBrace None 4 end_outer None 0 Op_Newline None 4 module_item var 0 Expr_Name var 1 name_type_list d4 0 name_type d4 0 Expr_Name d4 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_Newline None 2 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:51 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:52 val:bob)] multiline: F ) 2 Right_SingleQuote ' 3 Op_RBrace None 4 end_outer None 0 Op_Newline None 5 module_item var 0 Expr_Name var 1 name_type_list d5 0 name_type d5 0 Expr_Name d5 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:67 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:68 val:bob)] multiline: F ) 2 Right_SingleQuote ' 1 comma_newline None 0 Op_Newline None 2 Op_RBrace None 4 end_outer None 0 Op_Newline None 6 module_item var 0 Expr_Name var 1 name_type_list d6 0 name_type d6 0 Expr_Name d6 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:83 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:84 val:bob)] multiline: F ) 2 Right_SingleQuote ' 1 comma_newline None 0 Arith_Comma None 1 Op_Newline None 2 Op_RBrace None 4 end_outer None 0 Op_Newline None 7 module_item var 0 Expr_Name var 1 name_type_list commas0 0 name_type commas0 0 Expr_Name commas0 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_Newline None 2 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:103 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:104 val:bob)] multiline: F ) 2 Right_SingleQuote ' 1 comma_newline None 0 Op_Newline None 2 dict_pair age 0 Expr_Name age 1 Arith_Colon None 2 test 10 0 or_test 10 0 and_test 10 0 not_test 10 0 comparison 10 0 range_expr 10 0 expr 10 0 xor_expr 10 0 and_expr 10 0 shift_expr 10 0 arith_expr 10 0 term 10 0 factor 10 0 power 10 0 atom 10 0 Expr_DecInt 10 3 comma_newline None 0 Op_Newline None 3 Op_RBrace None 4 end_outer None 0 Op_Newline None 8 module_item var 0 Expr_Name var 1 name_type_list commas1 0 name_type commas1 0 Expr_Name commas1 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_Newline None 2 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:127 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:128 val:bob)] multiline: F ) 2 Right_SingleQuote ' 1 comma_newline None 0 Arith_Comma None 1 Op_Newline None 2 dict_pair age 0 Expr_Name age 1 Arith_Colon None 2 test 10 0 or_test 10 0 and_test 10 0 not_test 10 0 comparison 10 0 range_expr 10 0 expr 10 0 xor_expr 10 0 and_expr 10 0 shift_expr 10 0 arith_expr 10 0 term 10 0 factor 10 0 power 10 0 atom 10 0 Expr_DecInt 10 3 comma_newline None 0 Op_Newline None 3 Op_RBrace None 4 end_outer None 0 Op_Newline None 9 module_item var 0 Expr_Name var 1 name_type_list commas2 0 name_type commas2 0 Expr_Name commas2 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_Newline None 2 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:153 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:154 val:bob)] multiline: F ) 2 Right_SingleQuote ' 1 comma_newline None 0 Arith_Comma None 1 Op_Newline None 2 dict_pair age 0 Expr_Name age 1 Arith_Colon None 2 test 10 0 or_test 10 0 and_test 10 0 not_test 10 0 comparison 10 0 range_expr 10 0 expr 10 0 xor_expr 10 0 and_expr 10 0 shift_expr 10 0 arith_expr 10 0 term 10 0 factor 10 0 power 10 0 atom 10 0 Expr_DecInt 10 3 comma_newline None 0 Arith_Comma None 1 Op_Newline None 3 Op_RBrace None 4 end_outer None 0 Op_Newline None 10 module_item var 0 Expr_Name var 1 name_type_list lines 0 name_type lines 0 Expr_Name lines 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBrace None 1 Op_Newline None 2 dict name 0 dict_pair name 0 Expr_Name name 1 Arith_Colon None 2 test bob 0 or_test bob 0 and_test bob 0 not_test bob 0 comparison bob 0 range_expr bob 0 expr bob 0 xor_expr bob 0 and_expr bob 0 shift_expr bob 0 arith_expr bob 0 term bob 0 factor bob 0 power bob 0 atom bob 0 Expr_Name bob 1 comma_newline None 0 Op_Newline None 3 Op_RBrace None 4 end_outer None 0 Op_Newline None 11 Eof_Real (command.CommandList children: [ (command.VarDecl keyword: lhs:[(name_type name:)] rhs:(expr.Dict)) (command.VarDecl keyword: lhs:[(name_type name:)] rhs:(expr.Dict)) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys:[(Const Id.Expr_Name name)] values:[(SQ )]) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys:[(Const Id.Expr_Name name)] values:[(SQ )]) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys:[(Const Id.Expr_Name name)] values:[(SQ )]) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys:[(Const Id.Expr_Name name)] values:[(SQ )]) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys: [(Const Id.Expr_Name name) (Const Id.Expr_Name age)] values: [(SQ ) (Const Id.Expr_DecInt 10)] ) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys: [(Const Id.Expr_Name name) (Const Id.Expr_Name age)] values: [(SQ ) (Const Id.Expr_DecInt 10)] ) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys: [(Const Id.Expr_Name name) (Const Id.Expr_Name age)] values: [(SQ ) (Const Id.Expr_DecInt 10)] ) ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Dict keys:[(Const Id.Expr_Name name)] values:[(Var bob)]) ) ] ) tea/run.sh parse-one tea/testdata/hello.tea 0 tea_module - 0 Op_Newline None 1 module_item var 0 Expr_Name var 1 name_type_list x 0 name_type x 0 Expr_Name x 2 Arith_Equal None 3 testlist ' 0 test ' 0 or_test ' 0 and_test ' 0 not_test ' 0 comparison ' 0 range_expr ' 0 expr ' 0 xor_expr ' 0 and_expr ' 0 shift_expr ' 0 arith_expr ' 0 term ' 0 factor ' 0 power ' 0 atom ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:9 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:10 val:hello)] multiline: F ) 2 Right_SingleQuote ' 4 end_outer None 0 Op_Newline None 2 module_item func 0 Expr_Func func 1 Expr_Name main 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items while 0 func_item while 0 Expr_While while 1 test 0 0 or_test 0 0 and_test 0 0 not_test 0 0 comparison 0 0 range_expr 0 0 expr 0 0 xor_expr 0 0 and_expr 0 0 shift_expr 0 0 arith_expr 0 0 term 0 0 factor 0 0 power 0 0 atom 0 0 Expr_DecInt 0 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items echo 0 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 tea_word " 0 dq_string " 0 Left_DoubleQuote " 1 Expr_CastedDummy (double_quoted left: (Token id:Id.Left_DoubleQuote span_id:32 val:'"') parts: [(simple_var_sub token:(Token id:Id.VSub_DollarName span_id:33 val:'$x'))] multiline: F ) 2 Right_DoubleQuote " 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 3 end_outer None 0 Op_Newline None 3 Eof_Real (command.CommandList children: [ (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (SQ ) ) (command.Func name: body: (command.CommandList children: [ (command.While test: (Const Id.Expr_DecInt 0) body: (command.CommandList children:[(command.NoOp)]) ) ] ) ) ] ) tea/run.sh parse-one tea/testdata/data-enum.tea 0 tea_module - 0 Op_Newline None 1 module_item data 0 Expr_Name data 1 tea_data Point 0 Expr_Name Point 1 Op_LParen None 2 data_params x 0 func_param x 0 Expr_Name x 1 type_expr Int 0 Expr_Name Int 1 Arith_Comma None 2 func_param y 0 Expr_Name y 1 type_expr Int 0 Expr_Name Int 3 Op_RParen None 2 end_outer None 0 Op_Newline None 2 module_item data 0 Expr_Name data 1 tea_data Point3 0 Expr_Name Point3 1 Op_LParen None 2 data_params x 0 func_param x 0 Expr_Name x 1 Arith_Comma None 2 func_param y 0 Expr_Name y 3 Arith_Comma None 4 func_param z 0 Expr_Name z 3 Op_RParen None 2 end_outer None 0 Op_Newline None 3 module_item data 0 Expr_Name data 1 tea_data one 0 Expr_Name one 1 Op_LParen None 2 data_params x 0 func_param x 0 Expr_Name x 3 Op_RParen None 2 end_outer None 0 Op_Semi None 4 module_item data 0 Expr_Name data 1 tea_data two 0 Expr_Name two 1 Op_LParen None 2 data_params y 0 func_param y 0 Expr_Name y 3 Op_RParen None 2 end_outer None 0 Op_Semi None 1 Op_Newline None 5 module_item enum 0 Expr_Name enum 1 tea_enum empty 0 Expr_Name empty 1 Op_LBrace None 2 Op_RBrace None 2 end_outer None 0 Op_Newline None 6 module_item enum 0 Expr_Name enum 1 tea_enum op 0 Expr_Name op 1 Op_LBrace None 2 variant Plus 0 Expr_Name Plus 3 comma_newline None 0 Arith_Comma None 4 variant Minus 0 Expr_Name Minus 5 Op_RBrace None 2 end_outer None 0 Op_Newline None 7 module_item enum 0 Expr_Name enum 1 tea_enum comma1 0 Expr_Name comma1 1 Op_LBrace None 2 Op_Newline None 3 variant Times 0 Expr_Name Times 4 comma_newline None 0 Arith_Comma None 1 Op_Newline None 5 variant Divide 0 Expr_Name Divide 6 comma_newline None 0 Op_Newline None 7 Op_RBrace None 2 end_outer None 0 Op_Newline None 8 module_item enum 0 Expr_Name enum 1 tea_enum trailing_comma 0 Expr_Name trailing_comma 1 Op_LBrace None 2 Op_Newline None 3 variant Times 0 Expr_Name Times 4 comma_newline None 0 Arith_Comma None 1 Op_Newline None 5 variant Divide 0 Expr_Name Divide 6 comma_newline None 0 Arith_Comma None 1 Op_Newline None 7 Op_RBrace None 2 end_outer None 0 Op_Newline None 9 module_item enum 0 Expr_Name enum 1 tea_enum no_comma 0 Expr_Name no_comma 1 Op_LBrace None 2 Op_Newline None 3 variant Times 0 Expr_Name Times 4 comma_newline None 0 Op_Newline None 5 variant Divide 0 Expr_Name Divide 6 comma_newline None 0 Op_Newline None 7 Op_RBrace None 2 end_outer None 0 Op_Newline None 10 module_item enum 0 Expr_Name enum 1 tea_enum cflow 0 Expr_Name cflow 1 Op_LBrace None 2 Op_Newline None 3 variant Break 0 Expr_Name Break 4 comma_newline None 0 Arith_Comma None 5 variant Continue 0 Expr_Name Continue 6 comma_newline None 0 Arith_Comma None 7 variant Return 0 Expr_Name Return 1 variant_type None 0 Op_LParen None 1 data_params status 0 func_param status 0 Expr_Name status 1 type_expr Int 0 Expr_Name Int 2 Op_RParen None 8 comma_newline None 0 Op_Newline None 9 Op_RBrace None 2 end_outer None 0 Op_Newline None 11 module_item data 0 Expr_Name data 1 tea_data Token 0 Expr_Name Token 1 Op_LParen None 2 data_params id 0 func_param id 0 Expr_Name id 1 type_expr Id 0 Expr_Name Id 1 Arith_Comma None 2 func_param span_id 0 Expr_Name span_id 1 type_expr Int 0 Expr_Name Int 3 Arith_Comma None 4 func_param val 0 Expr_Name val 1 type_expr Str 0 Expr_Name Str 3 Op_RParen None 2 end_outer None 0 Op_Newline None 12 module_item enum 0 Expr_Name enum 1 tea_enum suffix_op 0 Expr_Name suffix_op 1 Op_LBrace None 2 Op_Newline None 3 variant Nullary 0 Expr_Name Nullary 1 variant_type %Token 0 Expr_Symbol %Token 4 comma_newline None 0 Arith_Comma None 1 Op_Newline None 5 variant Unary 0 Expr_Name Unary 1 variant_type None 0 Op_LParen None 1 data_params op_id 0 func_param op_id 0 Expr_Name op_id 1 type_expr Id 0 Expr_Name Id 1 Arith_Comma None 2 func_param arg_word 0 Expr_Name arg_word 1 type_expr Str 0 Expr_Name Str 2 Op_RParen None 6 comma_newline None 0 Op_Newline None 7 Op_RBrace None 2 end_outer None 0 Op_Newline None 13 module_item data 0 Expr_Name data 1 tea_data word 0 Expr_Name word 1 Op_LParen None 2 data_params parts 0 func_param parts 0 Expr_Name parts 1 type_expr Array 0 Expr_Name Array 1 Op_LBracket None 2 type_expr WordPart 0 Expr_Name WordPart 3 Op_RBracket None 3 Op_RParen None 2 end_outer None 0 Op_Newline None 14 module_item enum 0 Expr_Name enum 1 tea_enum value 0 Expr_Name value 1 Op_LBrace None 2 Op_Newline None 3 variant Str 0 Expr_Name Str 1 variant_type None 0 Op_LParen None 1 data_params s 0 func_param s 0 Expr_Name s 1 type_expr Str 0 Expr_Name Str 2 Op_RParen None 4 comma_newline None 0 Arith_Comma None 1 Op_Newline None 5 variant AssocArray 0 Expr_Name AssocArray 1 variant_type None 0 Op_LParen None 1 data_params d 0 func_param d 0 Expr_Name d 1 type_expr Map 0 Expr_Name Map 1 Op_LBracket None 2 type_expr Str 0 Expr_Name Str 3 Arith_Comma None 4 type_expr Str 0 Expr_Name Str 5 Op_RBracket None 2 Op_RParen None 6 comma_newline None 0 Op_Newline None 7 Op_RBrace None 2 end_outer None 0 Op_Newline None 15 Eof_Real (command.CommandList children: [ (command.Data name: params: [(param name:) (param name:)] ) (command.Data name: params: [(param name:) (param name:) (param name:)] ) (command.CommandList children: [ (command.Sentence child: (command.Data name: params:[(param name:)]) terminator: ) (command.Sentence child: (command.Data name: params:[(param name:)]) terminator: ) ] ) (command.Enum name:) (command.Enum name: variants: [(variant tag_name:) (variant tag_name:)] ) (command.Enum name: variants: [(variant tag_name:) (variant tag_name:)] ) (command.Enum name: variants: [(variant tag_name:) (variant tag_name:)] ) (command.Enum name: variants: [(variant tag_name:) (variant tag_name:)] ) (command.Enum name: variants: [ (variant tag_name:) (variant tag_name:) (variant tag_name: typ: (variant_type.Anon params:[(param name:)]) ) ] ) (command.Data name: params: [ (param name:) (param name:) (param name:) ] ) (command.Enum name: variants: [ (variant tag_name: typ: (variant_type.Ref type_name:) ) (variant tag_name: typ: (variant_type.Anon params: [(param name:) (param name:)] ) ) ] ) (command.Data name: params:[(param name:)]) (command.Enum name: variants: [ (variant tag_name: typ: (variant_type.Anon params:[(param name:)]) ) (variant tag_name: typ: (variant_type.Anon params:[(param name:)]) ) ] ) ] ) tea/run.sh parse-one tea/testdata/loops.tea 0 tea_module - 0 Op_Newline None 1 module_item func 0 Expr_Func func 1 Expr_Name main 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items while 0 func_item while 0 Expr_While while 1 test 0 0 or_test 0 0 and_test 0 0 not_test 0 0 comparison 0 0 range_expr 0 0 expr 0 0 xor_expr 0 0 and_expr 0 0 shift_expr 0 0 arith_expr 0 0 term 0 0 factor 0 0 power 0 0 atom 0 0 Expr_DecInt 0 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items break 0 func_item break 0 Expr_Break break 1 semi_newline None 0 Op_Semi None 1 Op_Newline None 3 Op_RBrace None 1 semi_newline None 0 Op_Newline None 2 func_item for 0 Expr_For for 1 name_type_list item 0 name_type item 0 Expr_Name item 2 Expr_In in 3 test items 0 or_test items 0 and_test items 0 not_test items 0 comparison items 0 range_expr items 0 expr items 0 xor_expr items 0 and_expr items 0 shift_expr items 0 arith_expr items 0 term items 0 factor items 0 power items 0 atom items 0 Expr_Name items 4 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items continue 0 func_item continue 0 Expr_Continue continue 1 semi_newline None 0 Op_Semi None 1 Op_Newline None 3 Op_RBrace None 3 semi_newline None 0 Op_Newline None 4 func_item for 0 Expr_For for 1 name_type_list x 0 name_type x 0 Expr_Name x 1 type_expr Int 0 Expr_Name Int 1 Arith_Comma None 2 name_type y 0 Expr_Name y 1 type_expr Int 0 Expr_Name Int 2 Expr_In in 3 test pairs 0 or_test pairs 0 and_test pairs 0 not_test pairs 0 comparison pairs 0 range_expr pairs 0 expr pairs 0 xor_expr pairs 0 and_expr pairs 0 shift_expr pairs 0 arith_expr pairs 0 term pairs 0 factor pairs 0 power pairs 0 atom pairs 0 Expr_Name pairs 4 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items return 0 func_item return 0 Expr_Return return 1 testlist 1 0 test 1 0 or_test 1 0 and_test 1 0 not_test 1 0 comparison 1 0 range_expr 1 0 expr 1 0 xor_expr 1 0 and_expr 1 0 shift_expr 1 0 arith_expr 1 0 term 1 0 factor 1 0 power 1 0 atom 1 0 Expr_DecInt 1 1 Arith_Plus None 2 term 2 0 factor 2 0 power 2 0 atom 2 0 Expr_DecInt 2 1 Arith_Star None 2 factor 3 0 power 3 0 atom 3 0 Expr_DecInt 3 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 5 semi_newline None 0 Op_Newline None 3 Op_RBrace None 3 end_outer None 0 Op_Newline None 2 Eof_Real (command.Func name: body: (command.CommandList children: [ (command.While test: (Const Id.Expr_DecInt 0) body: (command.CommandList children:[(command.Break)]) ) (command.For targets: [(name_type name:)] iterable: (Var items) body: (command.CommandList children:[(command.Continue)]) ) (command.For targets: [(name_type name:) (name_type name:)] iterable: (Var pairs) body: (command.CommandList children: [ (command.Return value: (expr.Binary op: left: (Const Id.Expr_DecInt 1) right: (expr.Binary op: left: (Const Id.Expr_DecInt 2) right: (Const Id.Expr_DecInt 3) ) ) ) ] ) ) ] ) ) tea/run.sh parse-one tea/testdata/file.tea 0 tea_module - 0 Op_Newline None 1 module_item import 0 Expr_Name import 1 tea_import ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:14 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:15 val:'frontend/syntax')] multiline: F ) 2 Right_SingleQuote ' 1 end_import None 0 Op_Newline None 2 module_item import 0 Expr_Name import 1 tea_import ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:20 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:21 val:bar)] multiline: F ) 2 Right_SingleQuote ' 1 Expr_As as 2 Expr_Name foo 3 end_import None 0 Op_Newline None 3 module_item import 0 Expr_Name import 1 tea_import ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:31 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:32 val:'core/util')] multiline: F ) 2 Right_SingleQuote ' 1 Op_LParen None 2 import_names log 0 import_name log 0 Expr_Name log 1 comma_newline None 0 Arith_Comma None 2 import_name p_die 0 Expr_Name p_die 3 comma_newline None 0 Arith_Comma None 4 import_name foo 0 Expr_Name foo 1 Expr_As as 2 Expr_Name bar 3 Op_RParen None 4 end_import None 0 Op_Newline None 4 module_item import 0 Expr_Name import 1 tea_import ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:52 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:53 val:'core/util')] multiline: F ) 2 Right_SingleQuote ' 1 Expr_As as 2 Expr_Name myutil 3 Op_LParen None 4 import_names log 0 import_name log 0 Expr_Name log 1 Expr_As as 2 Expr_Name mylog 5 Op_RParen None 6 end_import None 0 Op_Newline None 5 module_item import 0 Expr_Name import 1 tea_import ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:71 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:72 val:one)] multiline: F ) 2 Right_SingleQuote ' 1 end_import None 0 Op_Semi None 6 module_item import 0 Expr_Name import 1 tea_import ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:78 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:79 val:two)] multiline: F ) 2 Right_SingleQuote ' 1 end_import None 0 Op_Newline None 7 module_item var 0 Expr_Name var 1 name_type_list x 0 name_type x 0 Expr_Name x 2 Arith_Equal None 3 testlist 1 0 test 1 0 or_test 1 0 and_test 1 0 not_test 1 0 comparison 1 0 range_expr 1 0 expr 1 0 xor_expr 1 0 and_expr 1 0 shift_expr 1 0 arith_expr 1 0 term 1 0 factor 1 0 power 1 0 atom 1 0 Expr_DecInt 1 1 Arith_Plus None 2 term 2 0 factor 2 0 power 2 0 atom 2 0 Expr_DecInt 2 1 Arith_Star None 2 factor 3 0 power 3 0 atom 3 0 Expr_DecInt 3 4 end_outer None 0 Op_Semi None 1 Op_Newline None 8 module_item var 0 Expr_Name var 1 name_type_list y 0 name_type y 0 Expr_Name y 2 Arith_Equal None 3 testlist a 0 test a 0 or_test a 0 and_test a 0 not_test a 0 comparison a 0 range_expr a 0 expr a 0 xor_expr a 0 and_expr a 0 shift_expr a 0 arith_expr a 0 term a 0 factor a 0 power a 0 atom a 0 Expr_Name a 1 trailer None 0 Op_LBracket None 1 subscriptlist i 0 subscript i 0 expr i 0 xor_expr i 0 and_expr i 0 shift_expr i 0 arith_expr i 0 term i 0 factor i 0 power i 0 atom i 0 Expr_Name i 2 Op_RBracket None 4 end_outer None 0 Op_Newline None 9 Eof_Real (command.CommandList children: [ (command.Import path:(SQ <'frontend/syntax'>)) (command.Import path:(SQ )) (command.Import path:(SQ <'core/util'>)) (command.Import path:(SQ <'core/util'>)) (command.CommandList children: [ (command.Sentence child:(command.Import path:(SQ )) terminator:) (command.Import path:(SQ )) ] ) (command.Sentence child: (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (expr.Binary op: left: (Const Id.Expr_DecInt 1) right: (expr.Binary op: left: (Const Id.Expr_DecInt 2) right: (Const Id.Expr_DecInt 3) ) ) ) terminator: ) (command.VarDecl keyword: lhs: [(name_type name:)] rhs: (subscript obj:(Var a) indices:[(Var i)]) ) ] ) tea/run.sh parse-one tea/testdata/func.tea 0 tea_module - 0 Op_Newline None 1 module_item func 0 Expr_Func func 1 Expr_Name add 2 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 1 Arith_Comma None 2 func_param y 0 Expr_Name y 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 func_items return 0 func_item return 0 Expr_Return return 1 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Plus None 2 term y 0 factor y 0 power y 0 atom y 0 Expr_Name y 2 Op_RBrace None 3 end_outer None 0 Op_Newline None 2 module_item func 0 Expr_Func func 1 Expr_Name add 2 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 1 Arith_Comma None 2 func_param y 0 Expr_Name y 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 func_items return 0 func_item return 0 Expr_Return return 1 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Plus None 2 term y 0 factor y 0 power y 0 atom y 0 Expr_Name y 1 semi_newline None 0 Op_Newline None 2 Op_RBrace None 3 end_outer None 0 Op_Newline None 3 module_item func 0 Expr_Func func 1 Expr_Name stmt_semicolon 2 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 1 Arith_Comma None 2 func_param y 0 Expr_Name y 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 func_items var 0 func_item var 0 Expr_Name var 1 name_type_list z 0 name_type z 0 Expr_Name z 2 Arith_Equal None 3 testlist 32 0 test 32 0 or_test 32 0 and_test 32 0 not_test 32 0 comparison 32 0 range_expr 32 0 expr 32 0 xor_expr 32 0 and_expr 32 0 shift_expr 32 0 arith_expr 32 0 term 32 0 factor 32 0 power 32 0 atom 32 0 Expr_DecInt 32 1 semi_newline None 0 Op_Semi None 2 func_item return 0 Expr_Return return 1 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Plus None 2 term y 0 factor y 0 power y 0 atom y 0 Expr_Name y 3 Arith_Plus None 4 term z 0 factor z 0 power z 0 atom z 0 Expr_Name z 2 Op_RBrace None 3 end_outer None 0 Op_Newline None 4 module_item func 0 Expr_Func func 1 Expr_Name stmt_newline 2 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 1 Arith_Comma None 2 func_param y 0 Expr_Name y 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items var 0 func_item var 0 Expr_Name var 1 name_type_list d 0 name_type d 0 Expr_Name d 2 Arith_Equal None 3 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LBracket None 1 testlist_comp 42 0 test 42 0 or_test 42 0 and_test 42 0 not_test 42 0 comparison 42 0 range_expr 42 0 expr 42 0 xor_expr 42 0 and_expr 42 0 shift_expr 42 0 arith_expr 42 0 term 42 0 factor 42 0 power 42 0 atom 42 0 Expr_DecInt 42 2 Op_RBracket None 1 semi_newline None 0 Op_Newline None 2 func_item set 0 Expr_Name set 1 place_list d 0 expr d 0 xor_expr d 0 and_expr d 0 shift_expr d 0 arith_expr d 0 term d 0 factor d 0 power d 0 atom d 0 Expr_Name d 1 trailer None 0 Op_LBracket None 1 subscriptlist 0 0 subscript 0 0 expr 0 0 xor_expr 0 0 and_expr 0 0 shift_expr 0 0 arith_expr 0 0 term 0 0 factor 0 0 power 0 0 atom 0 0 Expr_DecInt 0 2 Op_RBracket None 2 Arith_Equal None 3 testlist 5 0 test 5 0 or_test 5 0 and_test 5 0 not_test 5 0 comparison 5 0 range_expr 5 0 expr 5 0 xor_expr 5 0 and_expr 5 0 shift_expr 5 0 arith_expr 5 0 term 5 0 factor 5 0 power 5 0 atom 5 0 Expr_DecInt 5 3 semi_newline None 0 Op_Newline None 4 func_item return 0 Expr_Return return 1 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Plus None 2 term y 0 factor y 0 power y 0 atom y 0 Expr_Name y 3 Arith_Plus None 4 term z 0 factor z 0 power z 0 atom z 0 Expr_Name z 5 semi_newline None 0 Op_Newline None 3 Op_RBrace None 3 end_outer None 0 Op_Newline None 5 module_item func 0 Expr_Func func 1 Expr_Name empty 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_RBrace None 3 end_outer None 0 Op_Newline None 6 module_item func 0 Expr_Func func 1 Expr_Name empty2 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 Op_RBrace None 3 end_outer None 0 Op_Newline None 7 module_item func 0 Expr_Func func 1 Expr_Name proclike 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items echo 0 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 tea_word ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:183 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:184 val:hi)] multiline: F ) 2 Right_SingleQuote ' 1 semi_newline None 0 Op_Newline None 2 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 tea_word ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:190 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:191 val:hi)] multiline: F ) 2 Right_SingleQuote ' 3 semi_newline None 0 Op_Semi None 1 Op_Newline None 4 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 tea_word ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:199 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:200 val:hi)] multiline: F ) 2 Right_SingleQuote ' 2 tea_word $there 0 simple_var_sub $there 0 VSub_DollarName $there 5 semi_newline None 0 Op_Semi None 1 Op_Newline None 6 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 tea_word ' 0 sq_string ' 0 Left_SingleQuote ' 1 Expr_CastedDummy (single_quoted left: (Token id:Id.Left_SingleQuote span_id:209 val:'\'') tokens: [(Token id:Id.Lit_Chars span_id:210 val:hi)] multiline: F ) 2 Right_SingleQuote ' 2 tea_word $there 0 simple_var_sub $there 0 VSub_DollarName $there 3 tea_word " 0 dq_string " 0 Left_DoubleQuote " 1 Expr_CastedDummy (double_quoted left: (Token id:Id.Left_DoubleQuote span_id:215 val:'"') parts: [(Token id:Id.Lit_Chars span_id:216 val:double)] multiline: F ) 2 Right_DoubleQuote " 4 tea_word ${ 0 braced_var_sub ${ 0 Left_DollarBrace ${ 1 Expr_CastedDummy (braced_var_sub token:(Token id:Id.VSub_Name span_id:220 val:x) spids:[219 221]) 2 Right_DollarBrace } 7 semi_newline None 0 Op_Semi None 1 Op_Newline None 3 Op_RBrace None 3 end_outer None 0 Op_Newline None 8 module_item var 0 Expr_Name var 1 name_type_list f1 0 name_type f1 0 Expr_Name f1 2 Arith_Equal None 3 testlist func 0 test func 0 or_test func 0 and_test func 0 not_test func 0 comparison func 0 range_expr func 0 expr func 0 xor_expr func 0 and_expr func 0 shift_expr func 0 arith_expr func 0 term func 0 factor func 0 power func 0 atom func 0 Expr_Func func 1 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 func_items return 0 func_item return 0 Expr_Return return 1 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Plus None 2 term 1 0 factor 1 0 power 1 0 atom 1 0 Expr_DecInt 1 2 Op_RBrace None 4 end_outer None 0 Op_Newline None 9 module_item var 0 Expr_Name var 1 name_type_list f2 0 name_type f2 0 Expr_Name f2 2 Arith_Equal None 3 testlist func 0 test func 0 or_test func 0 and_test func 0 not_test func 0 comparison func 0 range_expr func 0 expr func 0 xor_expr func 0 and_expr func 0 shift_expr func 0 arith_expr func 0 term func 0 factor func 0 power func 0 atom func 0 Expr_Func func 1 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items var 0 func_item var 0 Expr_Name var 1 name_type_list f 0 name_type f 0 Expr_Name f 2 Arith_Equal None 3 testlist func 0 test func 0 or_test func 0 and_test func 0 not_test func 0 comparison func 0 range_expr func 0 expr func 0 xor_expr func 0 and_expr func 0 shift_expr func 0 arith_expr func 0 term func 0 factor func 0 power func 0 atom func 0 Expr_Func func 1 tea_func None 0 Op_LParen None 1 func_params y 0 func_param y 0 Expr_Name y 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items return 0 func_item return 0 Expr_Return return 1 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Plus None 2 term y 0 factor y 0 power y 0 atom y 0 Expr_Name y 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 1 semi_newline None 0 Op_Newline None 2 func_item return 0 Expr_Return return 1 testlist f 0 test f 0 or_test f 0 and_test f 0 not_test f 0 comparison f 0 range_expr f 0 expr f 0 xor_expr f 0 and_expr f 0 shift_expr f 0 arith_expr f 0 term f 0 factor f 0 power f 0 atom f 0 Expr_Name f 3 semi_newline None 0 Op_Newline None 3 Op_RBrace None 4 end_outer None 0 Op_Newline None 10 Eof_Real (command.CommandList children: [ (command.Func name: pos_params: [(param name:) (param name:)] body: (command.CommandList children: [ (command.Return value: (expr.Binary op: left:(Var x) right:(Var y)) ) ] ) ) (command.Func name: pos_params: [(param name:) (param name:)] body: (command.CommandList children: [ (command.Return value: (expr.Binary op: left:(Var x) right:(Var y)) ) ] ) ) (command.Func name: pos_params: [(param name:) (param name:)] body: (command.CommandList children: [ (command.NoOp) (command.Return value: (expr.Binary op: left: (Var x) right: (expr.Binary op: left:(Var y) right:(Var z)) ) ) ] ) ) (command.Func name: pos_params: [(param name:) (param name:)] body: (command.CommandList children: [ (command.NoOp) (command.NoOp) (command.Return value: (expr.Binary op: left: (Var x) right: (expr.Binary op: left:(Var y) right:(Var z)) ) ) ] ) ) (command.Func name: body:(command.CommandList)) (command.Func name: body:(command.CommandList)) (command.Func name: body: (command.CommandList children: [(command.NoOp) (command.NoOp) (command.NoOp) (command.NoOp)] ) ) (command.VarDecl keyword: lhs:[(name_type name:)] rhs:(expr.Lambda body:(expr.Implicit))) (command.VarDecl keyword: lhs:[(name_type name:)] rhs:(expr.Lambda body:(expr.Implicit))) ] ) tea/run.sh parse-one tea/testdata/class.tea 0 tea_module - 0 Op_Newline None 1 module_item class 0 Expr_Name class 1 tea_class empty 0 Expr_Name empty 1 Op_LBrace None 2 Op_RBrace None 2 end_outer None 0 Op_Newline None 2 module_item class 0 Expr_Name class 1 tea_class empty2 0 Expr_Name empty2 1 Op_LBrace None 2 Op_Newline None 3 Op_RBrace None 2 end_outer None 0 Op_Newline None 3 module_item class 0 Expr_Name class 1 tea_class Lexer 0 Expr_Name Lexer 1 Op_LBrace None 2 Op_Newline None 3 class_items func 0 class_item func 0 Expr_Func func 1 Expr_Name Run 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items echo 0 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 1 semi_newline None 0 Op_Semi None 1 Op_Newline None 2 class_item virtual 0 Expr_Virtual virtual 1 Expr_Name Foo 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items echo 0 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 3 semi_newline None 0 Op_Newline None 4 Op_RBrace None 2 end_outer None 0 Op_Newline None 4 module_item class 0 Expr_Name class 1 tea_class FileReader 0 Expr_Name FileReader 1 Arith_Colon None 2 Expr_Name Reader 3 Op_LBrace None 4 Op_Newline None 5 class_items var 0 class_item var 0 Expr_Name var 1 name_type_list x 0 name_type x 0 Expr_Name x 1 type_expr Int 0 Expr_Name Int 1 semi_newline None 0 Op_Newline None 2 class_item var 0 Expr_Name var 1 name_type_list y 0 name_type y 0 Expr_Name y 3 semi_newline None 0 Op_Newline None 4 class_item var 0 Expr_Name var 1 name_type_list a 0 name_type a 0 Expr_Name a 1 type_expr Float 0 Expr_Name Float 5 semi_newline None 0 Op_Semi None 6 class_item var 0 Expr_Name var 1 name_type_list b 0 name_type b 0 Expr_Name b 7 semi_newline None 0 Op_Semi None 1 Op_Newline None 8 class_item func 0 Expr_Func func 1 Expr_Name init 2 tea_func None 0 Op_LParen None 1 func_params super 0 func_param super 0 Expr_Name super 1 Arith_Comma None 2 func_param x 0 Expr_Name x 3 Arith_Comma None 4 func_param y 0 Expr_Name y 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items echo 0 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 semi_newline None 0 Op_Newline None 3 Op_RBrace None 9 semi_newline None 0 Op_Newline None 10 class_item override 0 Expr_Override override 1 Expr_Name Run 2 tea_func None 0 Op_LParen None 1 Op_RParen None 2 suite None 0 Op_LBrace None 1 Op_Newline None 2 func_items var 0 func_item var 0 Expr_Name var 1 name_type_list x 0 name_type x 0 Expr_Name x 2 Arith_Equal None 3 testlist f 0 test f 0 or_test f 0 and_test f 0 not_test f 0 comparison f 0 range_expr f 0 expr f 0 xor_expr f 0 and_expr f 0 shift_expr f 0 arith_expr f 0 term f 0 factor f 0 power f 0 atom f 0 Expr_Name f 1 trailer None 0 Op_LParen None 1 arglist x 0 argument x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 2 Op_RParen None 1 semi_newline None 0 Op_Newline None 2 func_item set 0 Expr_Name set 1 place_list x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 trailer None 0 Op_LBracket None 1 subscriptlist 1 0 subscript 1 0 expr 1 0 xor_expr 1 0 and_expr 1 0 shift_expr 1 0 arith_expr 1 0 term 1 0 factor 1 0 power 1 0 atom 1 0 Expr_DecInt 1 2 Op_RBracket None 2 Arith_Equal None 3 testlist 2 0 test 2 0 or_test 2 0 and_test 2 0 not_test 2 0 comparison 2 0 range_expr 2 0 expr 2 0 xor_expr 2 0 and_expr 2 0 shift_expr 2 0 arith_expr 2 0 term 2 0 factor 2 0 power 2 0 atom 2 0 Expr_DecInt 2 3 semi_newline None 0 Op_Newline None 4 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 5 semi_newline None 0 Op_Newline None 6 func_item f 0 testlist f 0 test f 0 or_test f 0 and_test f 0 not_test f 0 comparison f 0 range_expr f 0 expr f 0 xor_expr f 0 and_expr f 0 shift_expr f 0 arith_expr f 0 term f 0 factor f 0 power f 0 atom f 0 Expr_Name f 1 trailer None 0 Op_LParen None 1 arglist x 0 argument x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 2 Op_RParen None 7 semi_newline None 0 Op_Newline None 8 func_item 1 0 testlist 1 0 test 1 0 or_test 1 0 and_test 1 0 not_test 1 0 comparison 1 0 range_expr 1 0 expr 1 0 xor_expr 1 0 and_expr 1 0 shift_expr 1 0 arith_expr 1 0 term 1 0 factor 1 0 power 1 0 atom 1 0 Expr_DecInt 1 1 Arith_Plus None 2 term 2 0 factor 2 0 power 2 0 atom 2 0 Expr_DecInt 2 9 semi_newline None 0 Op_Newline None 10 func_item obj 0 testlist obj 0 test obj 0 or_test obj 0 and_test obj 0 not_test obj 0 comparison obj 0 range_expr obj 0 expr obj 0 xor_expr obj 0 and_expr obj 0 shift_expr obj 0 arith_expr obj 0 term obj 0 factor obj 0 power obj 0 atom obj 0 Expr_Name obj 1 trailer . 0 Expr_Dot . 1 Expr_Name method 2 trailer None 0 Op_LParen None 1 Op_RParen None 11 semi_newline None 0 Op_Semi None 12 func_item obj 0 testlist obj 0 test obj 0 or_test obj 0 and_test obj 0 not_test obj 0 comparison obj 0 range_expr obj 0 expr obj 0 xor_expr obj 0 and_expr obj 0 shift_expr obj 0 arith_expr obj 0 term obj 0 factor obj 0 power obj 0 atom obj 0 Expr_Name obj 1 trailer . 0 Expr_Dot . 1 Expr_Name method2 2 trailer None 0 Op_LParen None 1 Op_RParen None 13 semi_newline None 0 Op_Newline None 14 func_item 3 0 testlist 3 0 test 3 0 or_test 3 0 and_test 3 0 not_test 3 0 comparison 3 0 range_expr 3 0 expr 3 0 xor_expr 3 0 and_expr 3 0 shift_expr 3 0 arith_expr 3 0 term 3 0 factor 3 0 power 3 0 atom 3 0 Expr_DecInt 3 1 Arith_Comma None 2 test 4 0 or_test 4 0 and_test 4 0 not_test 4 0 comparison 4 0 range_expr 4 0 expr 4 0 xor_expr 4 0 and_expr 4 0 shift_expr 4 0 arith_expr 4 0 term 4 0 factor 4 0 power 4 0 atom 4 0 Expr_DecInt 4 15 semi_newline None 0 Op_Newline None 16 func_item None 0 testlist None 0 test None 0 or_test None 0 and_test None 0 not_test None 0 comparison None 0 range_expr None 0 expr None 0 xor_expr None 0 and_expr None 0 shift_expr None 0 arith_expr None 0 term None 0 factor None 0 power None 0 atom None 0 Op_LParen None 1 testlist_comp 5 0 test 5 0 or_test 5 0 and_test 5 0 not_test 5 0 comparison 5 0 range_expr 5 0 expr 5 0 xor_expr 5 0 and_expr 5 0 shift_expr 5 0 arith_expr 5 0 term 5 0 factor 5 0 power 5 0 atom 5 0 Expr_DecInt 5 1 Arith_Comma None 2 test 6 0 or_test 6 0 and_test 6 0 not_test 6 0 comparison 6 0 range_expr 6 0 expr 6 0 xor_expr 6 0 and_expr 6 0 shift_expr 6 0 arith_expr 6 0 term 6 0 factor 6 0 power 6 0 atom 6 0 Expr_DecInt 6 2 Op_RParen None 17 semi_newline None 0 Op_Newline None 18 func_item x 0 testlist x 0 test x 0 or_test x 0 and_test x 0 not_test x 0 comparison x 0 range_expr x 0 expr x 0 xor_expr x 0 and_expr x 0 shift_expr x 0 arith_expr x 0 term x 0 factor x 0 power x 0 atom x 0 Expr_Name x 1 Arith_Equal None 2 testlist 1 0 test 1 0 or_test 1 0 and_test 1 0 not_test 1 0 comparison 1 0 range_expr 1 0 expr 1 0 xor_expr 1 0 and_expr 1 0 shift_expr 1 0 arith_expr 1 0 term 1 0 factor 1 0 power 1 0 atom 1 0 Expr_DecInt 1 19 semi_newline None 0 Op_Newline None 3 Op_RBrace None 11 semi_newline None 0 Op_Newline None 6 Op_RBrace None 2 end_outer None 0 Op_Newline None 5 module_item class 0 Expr_Name class 1 tea_class OneVar 0 Expr_Name OneVar 1 Op_LBrace None 2 class_items var 0 class_item var 0 Expr_Name var 1 name_type_list a 0 name_type a 0 Expr_Name a 3 Op_RBrace None 2 end_outer None 0 Op_Newline None 6 module_item class 0 Expr_Name class 1 tea_class OneLine 0 Expr_Name OneLine 1 Op_LBrace None 2 class_items var 0 class_item var 0 Expr_Name var 1 name_type_list a 0 name_type a 0 Expr_Name a 1 semi_newline None 0 Op_Semi None 2 class_item var 0 Expr_Name var 1 name_type_list b 0 name_type b 0 Expr_Name b 3 Op_RBrace None 2 end_outer None 0 Op_Newline None 7 module_item class 0 Expr_Name class 1 tea_class OneLine2 0 Expr_Name OneLine2 1 Op_LBrace None 2 class_items var 0 class_item var 0 Expr_Name var 1 name_type_list a 0 name_type a 0 Expr_Name a 1 semi_newline None 0 Op_Semi None 2 class_item var 0 Expr_Name var 1 name_type_list b 0 name_type b 0 Expr_Name b 3 semi_newline None 0 Op_Semi None 4 class_item func 0 Expr_Func func 1 Expr_Name f 2 tea_func None 0 Op_LParen None 1 func_params x 0 func_param x 0 Expr_Name x 2 Op_RParen None 3 suite None 0 Op_LBrace None 1 func_items echo 0 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 1 semi_newline None 0 Op_Semi None 2 func_item echo 0 testlist echo 0 test echo 0 or_test echo 0 and_test echo 0 not_test echo 0 comparison echo 0 range_expr echo 0 expr echo 0 xor_expr echo 0 and_expr echo 0 shift_expr echo 0 arith_expr echo 0 term echo 0 factor echo 0 power echo 0 atom echo 0 Expr_Name echo 2 Op_RBrace None 3 Op_RBrace None 2 end_outer None 0 Op_Newline None 8 Eof_Real (command.CommandList children: [ (command.Class name:) (command.Class name:) (command.Class name:) (command.Class name:) (command.Class name:) (command.Class name:) (command.Class name:) ] ) (command.CommandList children: [ (command.Sentence child:(C {} {(SQ )}) terminator:) (command.Data name: params: [(param name:) (param name:)] ) ] ) 0 tea_module - 0 module_item data 0 Expr_Name data 1 tea_data Point 0 Expr_Name Point 1 Op_LParen None 2 data_params x 0 func_param x 0 Expr_Name x 1 type_expr Int 0 Expr_Name Int 1 Arith_Comma None 2 func_param y 0 Expr_Name y 1 type_expr Int 0 Expr_Name Int 3 Op_RParen None 2 end_outer 0 Eof_Real 1 Eof_Real 0 tea_module - 0 module_item data 0 Expr_Name data 1 tea_data Point 0 Expr_Name Point 1 Op_LParen None 2 data_params x 0 func_param x 0 Expr_Name x 1 type_expr Int 0 Expr_Name Int 1 Arith_Comma None 2 func_param y 0 Expr_Name y 1 type_expr Int 0 Expr_Name Int 3 Op_RParen None 2 end_outer None 0 Op_Newline None 1 Eof_Real