diff --git a/src/syn/parser.pest b/src/syn/parser.pest index 46e6920..a4bcc27 100644 --- a/src/syn/parser.pest +++ b/src/syn/parser.pest @@ -19,6 +19,7 @@ assign = { ":" ~ word } atom = { float | int | assign | word | str | apply } quote = { "[" ~ stmt* ~ "]" } expr = { atom | quote } -stmt = { expr } +include = { "%include" ~ str } +stmt = { include | expr } file = { SOI ~ stmt* ~ EOI } \ No newline at end of file diff --git a/src/syn/peg.rs b/src/syn/peg.rs index 2a06217..5df88b3 100644 --- a/src/syn/peg.rs +++ b/src/syn/peg.rs @@ -95,6 +95,7 @@ fn parse_stmt(source: &Rc, pair: Pair) -> Result { let pair_span = pair.as_span(); let stmt = match pair.as_rule() { Rule::expr => Stmt::Expr(parse_expr(source, pair.into_inner().next().unwrap())?), + Rule::include => Stmt::Include(unescape_string(pair.into_inner().next().unwrap().as_str())), rule => unreachable!("{:?}", rule), }; let span = Span {