mirror of
https://github.com/zaphar/ucg.git
synced 2025-07-22 18:19:54 -04:00
POLISH: Better error reporting for statements.
This commit is contained in:
parent
fdd8a35086
commit
79bee4e2b4
@ -755,20 +755,32 @@ fn tuple_to_let(t: (Token, Expression)) -> ParseResult<Statement> {
|
||||
}))
|
||||
}
|
||||
|
||||
named!(let_statement<TokenIter, Statement, error::Error>,
|
||||
named!(let_stmt_body<TokenIter, Statement, error::Error>,
|
||||
map_res!(
|
||||
do_parse!(
|
||||
word!("let") >>
|
||||
name: match_type!(BAREWORD) >>
|
||||
punct!("=") >>
|
||||
val: expression >>
|
||||
punct!(";") >>
|
||||
(name, val)
|
||||
),
|
||||
(name, val)),
|
||||
tuple_to_let
|
||||
)
|
||||
);
|
||||
|
||||
named!(let_statement<TokenIter, Statement, error::Error>,
|
||||
do_parse!(
|
||||
word!("let") >>
|
||||
pos: pos >>
|
||||
stmt: add_return_error!(
|
||||
nom::ErrorKind::Custom(
|
||||
error::Error::new(
|
||||
"Invalid syntax for let binding",
|
||||
error::ErrorType::ParseError, pos)),
|
||||
let_stmt_body) >>
|
||||
(stmt)
|
||||
)
|
||||
);
|
||||
|
||||
fn tuple_to_import(t: (Token, Token)) -> ParseResult<Statement> {
|
||||
Ok(Statement::Import(ImportDef {
|
||||
path: t.0,
|
||||
@ -776,20 +788,33 @@ fn tuple_to_import(t: (Token, Token)) -> ParseResult<Statement> {
|
||||
}))
|
||||
}
|
||||
|
||||
named!(import_statement<TokenIter, Statement, error::Error>,
|
||||
named!(import_stmt_body<TokenIter, Statement, error::Error>,
|
||||
map_res!(
|
||||
do_parse!(
|
||||
word!("import") >>
|
||||
path: match_type!(STR) >>
|
||||
word!("as") >>
|
||||
name: match_type!(BAREWORD) >>
|
||||
punct!(";") >>
|
||||
(path, name)
|
||||
),
|
||||
do_parse!(
|
||||
path: match_type!(STR) >>
|
||||
word!("as") >>
|
||||
name: match_type!(BAREWORD) >>
|
||||
punct!(";") >>
|
||||
(path, name)),
|
||||
tuple_to_import
|
||||
)
|
||||
);
|
||||
|
||||
named!(import_statement<TokenIter, Statement, error::Error>,
|
||||
do_parse!(
|
||||
word!("import") >>
|
||||
// past this point we know this is supposed to be an import statement.
|
||||
pos: pos >>
|
||||
stmt: add_return_error!(
|
||||
nom::ErrorKind::Custom(
|
||||
error::Error::new(
|
||||
"Invalid syntax for import",
|
||||
error::ErrorType::ParseError, pos)),
|
||||
import_stmt_body) >>
|
||||
(stmt)
|
||||
)
|
||||
);
|
||||
|
||||
named!(statement<TokenIter, Statement, error::Error>,
|
||||
do_parse!(
|
||||
stmt: alt_complete!(
|
||||
|
Loading…
x
Reference in New Issue
Block a user