Parse literals except string literals
This commit is contained in:
parent
5b24bd7b79
commit
ad91e3b3fb
1 changed files with 25 additions and 3 deletions
|
|
@ -90,7 +90,29 @@ fn table_lit(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parser() -> impl Parser<char, TableLit, Error = Simple<char>> {
|
fn string_lit() -> impl Parser<char, String, Error = Simple<char>> + Clone {
|
||||||
let expr = num_lit().map(|num| Expr::Lit(Lit::Num(num)));
|
filter(|_| false).to(String::new()) // TODO Implement
|
||||||
table_lit(expr).then_ignore(end())
|
}
|
||||||
|
|
||||||
|
fn lit(
|
||||||
|
expr: impl Parser<char, Expr, Error = Simple<char>> + Clone,
|
||||||
|
) -> impl Parser<char, Lit, Error = Simple<char>> {
|
||||||
|
let nil = text::keyword("nil").to(Lit::Nil);
|
||||||
|
let r#true = text::keyword("true").to(Lit::Bool(true));
|
||||||
|
let r#false = text::keyword("false").to(Lit::Bool(false));
|
||||||
|
let num = num_lit().map(Lit::Num);
|
||||||
|
let string = string_lit().map(Lit::String);
|
||||||
|
let table = table_lit(expr).map(Lit::Table);
|
||||||
|
|
||||||
|
nil.or(r#true)
|
||||||
|
.or(r#false)
|
||||||
|
.or(num)
|
||||||
|
.or(string)
|
||||||
|
.or(table)
|
||||||
|
.padded()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn parser() -> impl Parser<char, Lit, Error = Simple<char>> {
|
||||||
|
let expr = num_lit().map(|num| Expr::Lit(Lit::Num(num)));
|
||||||
|
lit(expr).then_ignore(end())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue