7 @ glance code, read the mem-alloc relative part,
9 # code-analyze, output lang-elem token txt.
14 # binary-code func ivk
18 @ ${!var}对!chk,输出envar的token和格式化字符串的subst-token
21 # defined in several pages. one page has 255 token.
22 # vtoken ret from sub tokenlist. tokenlist has an id, and a var with str-name to export.
25 # bracket3n1()中判断paired token,将paired_token_str设置为NULL
26 # {}()是opr-char,而""是嵌套状态的,是pair-char,同样,$产生嵌套,定义在pfx-char当中。
27 # codeblock,envar,string, 三者可嵌套。envar和string中的proc函数需考虑codeblock的flag判断。codeblock切换状态的同时,设置flag。在state嵌套level为0时取消flag。
29 @ /* */ 和 /** **/ 的 cmnt,在/*起始时,对于**/是否输出异常token?
36 + if/else/endif judgement
38 # struct-union-enum-define
43 + if-stmt(if/else/elif/fi)
44 + while-stmt(do/while)
45 + for-stmt(for/in/foreach)
46 + switch-stmt(switch/case)
48 + jmp-stmt(break/continue/return/;;)
49 # cmd & bg & redirect & pipe & logic
60 { T_WORD, idx_opr, assign_opr, assign_val },
65 { T_LBRACKET2, idx_token, T_RBRACKET2 },
79 { T_LBRACKET1, array_assign_list, T_RBRACKET1 },
87 { T_WORD array_assign_list },
94 { T_WORD, expr_idx_opr, expr_assign_opr, expr_calc },
95 { envar_assign, expr_calc },
100 { T_LBRACKET2, expr_calc, T_LBRACKET2 },
132 { T_LBRACKET2, T_CONST_DIGIT, T_RBRACKET2 },
133 { T_WORD, T_LBRACKET2, T_CONST_DIGIT, T_RBRACKET2 },
138 { T_LBRACKET3, expr_initor, T_RBRACKET3 },
139 { T_LBRACKET3, expr_initor, T_COMMA, T_RBRACKET3 },
141 { expr_initor, T_COMMA, expr_val },
142 { T_POINT, expr_var_member, T_EQUAL, expr_val },
143 { expr_initor, T_COMMA, T_POINT, expr_var_member, T_EQUAL, expr_val },
150 { T_LBRACKET1, expr_calc, T_RBRACKET1 },
152 { expr_calc, T_ADD, expr_calc },
153 { expr_calc, T_SUB, expr_calc },
154 { expr_calc, T_MUL, expr_calc },
155 { expr_calc, T_DIV, expr_calc },
156 { expr_calc, T_MOD, expr_calc },
157 { expr_calc, T_POW, expr_calc },
159 { T_REVERSE, expr_calc },
160 { expr_calc, T_AND, expr_calc },
161 { expr_calc, T_OR, expr_calc },
162 { expr_calc, T_XOR, expr_calc },
164 { expr_calc, T_LSHIFT, expr_calc },
165 { expr_calc, T_RSHIFT, expr_calc },
167 { T_NOT, expr_calc },
168 { expr_calc, T_DAND, expr_calc },
169 { expr_calc, T_DOR, expr_calc },
171 { expr_calc, T_GT, expr_calc },
172 { expr_calc, T_GE, expr_calc },
173 { expr_calc, T_LT, expr_calc },
174 { expr_calc, T_LE, expr_calc },
176 { T_LBRACKET1, expr_calc, T_RBRACKET1, expr_calc, T_COLON, expr_calc },