diff --git a/lalrpop/src/grammar/parse_tree.rs b/lalrpop/src/grammar/parse_tree.rs index 037cc0a..e124fdb 100644 --- a/lalrpop/src/grammar/parse_tree.rs +++ b/lalrpop/src/grammar/parse_tree.rs @@ -26,6 +26,7 @@ pub struct Grammar { pub where_clauses: Vec, pub items: Vec, pub annotations: Vec, + pub module_annotations: Vec, } #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)] diff --git a/lalrpop/src/parser/lrgrammar.lalrpop b/lalrpop/src/parser/lrgrammar.lalrpop index c10e3b8..d9712d3 100644 --- a/lalrpop/src/parser/lrgrammar.lalrpop +++ b/lalrpop/src/parser/lrgrammar.lalrpop @@ -9,6 +9,7 @@ use util::strip; grammar<'input>(text: &'input str); pub Grammar: Grammar = + "grammar" @@ -30,7 +31,8 @@ pub Grammar: Grammar = parameters: parameters.unwrap_or(vec![]), where_clauses: where_clauses, items: uses.into_iter().chain(items).collect(), - annotations: annotations } + annotations: annotations, + module_annotations: module_annotations } }; GrammarTypeParameters: Vec = @@ -361,6 +363,9 @@ Comma: Vec = ",")*> => v0.into_iter().chain(e1).collect(); +ShebangAttribute: String = + => s.to_string(); + extern { type Location = usize; type Error = tok::Error;