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!(
|
map_res!(
|
||||||
do_parse!(
|
do_parse!(
|
||||||
word!("let") >>
|
|
||||||
name: match_type!(BAREWORD) >>
|
name: match_type!(BAREWORD) >>
|
||||||
punct!("=") >>
|
punct!("=") >>
|
||||||
val: expression >>
|
val: expression >>
|
||||||
punct!(";") >>
|
punct!(";") >>
|
||||||
(name, val)
|
(name, val)),
|
||||||
),
|
|
||||||
tuple_to_let
|
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> {
|
fn tuple_to_import(t: (Token, Token)) -> ParseResult<Statement> {
|
||||||
Ok(Statement::Import(ImportDef {
|
Ok(Statement::Import(ImportDef {
|
||||||
path: t.0,
|
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!(
|
map_res!(
|
||||||
do_parse!(
|
do_parse!(
|
||||||
word!("import") >>
|
path: match_type!(STR) >>
|
||||||
path: match_type!(STR) >>
|
word!("as") >>
|
||||||
word!("as") >>
|
name: match_type!(BAREWORD) >>
|
||||||
name: match_type!(BAREWORD) >>
|
punct!(";") >>
|
||||||
punct!(";") >>
|
(path, name)),
|
||||||
(path, name)
|
|
||||||
),
|
|
||||||
tuple_to_import
|
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>,
|
named!(statement<TokenIter, Statement, error::Error>,
|
||||||
do_parse!(
|
do_parse!(
|
||||||
stmt: alt_complete!(
|
stmt: alt_complete!(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user