OLD | NEW |
1 part of lisp; | 1 part of petitparser.lisp; |
2 | 2 |
3 /** | 3 /// LISP grammar. |
4 * LISP grammar. | |
5 */ | |
6 class LispGrammar extends GrammarParser { | 4 class LispGrammar extends GrammarParser { |
7 LispGrammar() : super(new LispGrammarDefinition()); | 5 LispGrammar() : super(new LispGrammarDefinition()); |
8 } | 6 } |
9 | 7 |
10 /** | 8 /// LISP grammar definition. |
11 * LISP grammar definition. | |
12 */ | |
13 class LispGrammarDefinition extends GrammarDefinition { | 9 class LispGrammarDefinition extends GrammarDefinition { |
14 | 10 |
15 start() => ref(atom).star().end(); | 11 start() => ref(atom).star().end(); |
16 | 12 |
17 atom() => ref(atom_).trim(ref(space)); | 13 atom() => ref(atom_).trim(ref(space)); |
18 atom_() => ref(list) | 14 atom_() => ref(list) |
19 | ref(number) | 15 | ref(number) |
20 | ref(string) | 16 | ref(string) |
21 | ref(symbol) | 17 | ref(symbol) |
22 | ref(quote) | 18 | ref(quote) |
(...skipping 27 matching lines...) Expand all Loading... |
50 quote() => char('\'') & ref(list); | 46 quote() => char('\'') & ref(list); |
51 quasiquote() => char('`') & ref(list); | 47 quasiquote() => char('`') & ref(list); |
52 unquote() => char(',') & ref(list); | 48 unquote() => char(',') & ref(list); |
53 splice() => char('@') & ref(list); | 49 splice() => char('@') & ref(list); |
54 | 50 |
55 space() => whitespace() | ref(comment); | 51 space() => whitespace() | ref(comment); |
56 comment() => char(';') & Token.newlineParser().neg().star(); | 52 comment() => char(';') & Token.newlineParser().neg().star(); |
57 bracket(String brackets, Parser parser) => char(brackets[0]) & parser & char(b
rackets[1]); | 53 bracket(String brackets, Parser parser) => char(brackets[0]) & parser & char(b
rackets[1]); |
58 | 54 |
59 } | 55 } |
OLD | NEW |