diff options
author | Griffin Smith <root@gws.fyi> | 2021-03-14T16·27-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2021-03-14T16·27-0400 |
commit | 7960c3270e1a338f4da40d044a6896df96d82c79 (patch) | |
tree | a9e3ed46da89525ba7887c7be84539510b6b8a6a /src/parser/mod.rs | |
parent | 39656a3801bb311edd9ebb65e92a24fc48f69ec7 (diff) |
Make string and bool parsing complete
Diffstat (limited to 'src/parser/mod.rs')
-rw-r--r-- | src/parser/mod.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 9ac590cee86c..9c4598732247 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -1,6 +1,6 @@ use nom::character::complete::{multispace0, multispace1}; use nom::error::{ErrorKind, ParseError}; -use nom::{alt, char, complete, do_parse, many0, named, separated_list0, tag}; +use nom::{alt, char, complete, do_parse, many0, named, separated_list0, tag, terminated}; #[macro_use] mod macros; @@ -81,7 +81,7 @@ named!(pub decl(&str) -> Decl, alt!( fun_decl )); -named!(pub toplevel(&str) -> Vec<Decl>, many0!(decl)); +named!(pub toplevel(&str) -> Vec<Decl>, terminated!(many0!(decl), multispace0)); #[cfg(test)] mod tests { @@ -114,5 +114,10 @@ mod tests { fn main = plus (id 2) 7" ); assert_eq!(res.len(), 3); + let res = test_parse!( + toplevel, + "fn id x = x\nfn plus x y = x + y\nfn main = plus (id 2) 7\n" + ); + assert_eq!(res.len(), 3); } } |