diff --git a/src/parser/basic.rs b/src/parser/basic.rs index d3cb2f1..0fbad2e 100644 --- a/src/parser/basic.rs +++ b/src/parser/basic.rs @@ -41,6 +41,14 @@ pub fn space() -> impl Parser { } pub fn ident() -> impl Parser { - // TODO Forbid keywords - text::ident().map_with_span(|name, span| Ident { name, span }) + text::ident().try_map(|name, span| { + if matches!( + &name as &str, + "nil" | "true" | "false" | "local" | "not" | "and" | "or" + ) { + Err(Simple::custom(span, "identifier uses reserved name")) + } else { + Ok(Ident { name, span }) + } + }) }