| 186 | return cont(pushlex("stat", tag), comb, poplex, block); |
| 187 | } |
| 188 | function block(type) { |
| 189 | if (type == "}") return cont(); |
| 190 | if (type == "let") return stat_of(letdef1, "let"); |
| 191 | if (type == "fn") return stat_of(fndef); |
| 192 | if (type == "type") return cont(pushlex("stat"), tydef, endstatement, poplex, block); |
| 193 | if (type == "enum") return stat_of(enumdef); |
| 194 | if (type == "mod") return stat_of(mod); |
| 195 | if (type == "iface") return stat_of(iface); |
| 196 | if (type == "impl") return stat_of(impl); |
| 197 | if (type == "open-attr") return cont(pushlex("]"), commasep(expression, "]"), poplex); |
| 198 | if (type == "ignore" || type.match(/[\]\);,]/)) return cont(block); |
| 199 | return pass(pushlex("stat"), expression, poplex, endstatement, block); |
| 200 | } |
| 201 | function endstatement(type) { |
| 202 | if (type == ";") return cont(); |
| 203 | return pass(); |