| 5 | import stone.ast.Dot; |
| 6 | |
| 7 | public class ClassParser extends ClosureParser { |
| 8 | Parser member = rule().or(def, simple); |
| 9 | Parser class_body = rule(ClassBody.class).sep("{").option(member) |
| 10 | .repeat(rule().sep(";", Token.EOL).option(member)) |
| 11 | .sep("}"); |
| 12 | Parser defclass = rule(ClassStmnt.class).sep("class").identifier(reserved) |
| 13 | .option(rule().sep("extends").identifier(reserved)) |
| 14 | .ast(class_body); |
| 15 | public ClassParser() { |
| 16 | postfix.insertChoice(rule(Dot.class).sep(".").identifier(reserved)); |
| 17 | program.insertChoice(defclass); |
| 18 | } |
| 19 | } |