Skip to content

Commit a3c9d52

Browse files
committed
permit comments in between items
1 parent a727994 commit a3c9d52

File tree

3 files changed

+4134
-3898
lines changed

3 files changed

+4134
-3898
lines changed

chalk-parse/src/parser.lalrpop

+14-7
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,25 @@ use lalrpop_intern::intern;
44
grammar;
55

66
pub Program: Program = {
7-
Item* => Program { items: <> }
7+
Items => Program { items: <> }
88
};
99

10-
Item: Item = {
11-
StructDefn => Item::StructDefn(<>),
12-
TraitDefn => Item::TraitDefn(<>),
13-
Impl => Item::Impl(<>),
14-
KrateDefn => Item::KrateDefn(<>),
10+
Items: Vec<Item> = {
11+
Item* => <>.into_iter().filter_map(|v| v).collect()
1512
};
1613

14+
Item: Option<Item> = {
15+
Comment => None,
16+
StructDefn => Some(Item::StructDefn(<>)),
17+
TraitDefn => Some(Item::TraitDefn(<>)),
18+
Impl => Some(Item::Impl(<>)),
19+
KrateDefn => Some(Item::KrateDefn(<>)),
20+
};
21+
22+
Comment: () = r"//.*";
23+
1724
KrateDefn: KrateDefn = {
18-
<name:KrateId> "{" <items:Item*> "}" => KrateDefn {
25+
<name:KrateId> "{" <items:Items> "}" => KrateDefn {
1926
name: name,
2027
items: items,
2128
},

0 commit comments

Comments
 (0)