Skip to main content

luaur_ast/methods/
parser_parse_name_opt.rs

1use crate::records::ast_name::AstName;
2use crate::records::lexeme::Type;
3use crate::records::name::Name;
4use crate::records::parser::Parser;
5
6impl Parser {
7    pub fn parse_name_opt(&mut self, context: &str) -> Option<Name> {
8        if self.lexer.current().r#type != Type::Name {
9            self.report_name_error(context);
10
11            return None;
12        }
13
14        let current = self.lexer.current();
15        let result = Name {
16            name: AstName {
17                value: unsafe { current.data.name },
18            },
19            location: current.location,
20        };
21
22        self.next_lexeme();
23
24        Some(result)
25    }
26}