emmylua_parser/lexer/
lexer_config.rs

1use crate::{LuaNonStdSymbolSet, kind::LuaLanguageLevel};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub struct LexerConfig {
5    pub language_level: LuaLanguageLevel,
6    pub non_std_symbols: LuaNonStdSymbolSet,
7}
8
9impl LexerConfig {
10    pub fn support_goto(&self) -> bool {
11        self.language_level >= LuaLanguageLevel::Lua52
12            || self.language_level == LuaLanguageLevel::LuaJIT
13    }
14
15    pub fn support_complex_number(&self) -> bool {
16        matches!(self.language_level, LuaLanguageLevel::LuaJIT)
17    }
18
19    pub fn support_ll_integer(&self) -> bool {
20        matches!(self.language_level, LuaLanguageLevel::LuaJIT)
21    }
22
23    pub fn support_binary_integer(&self) -> bool {
24        matches!(self.language_level, LuaLanguageLevel::LuaJIT)
25    }
26
27    pub fn support_integer_operation(&self) -> bool {
28        self.language_level >= LuaLanguageLevel::Lua53
29    }
30
31    pub fn support_global_decl(&self) -> bool {
32        self.language_level >= LuaLanguageLevel::Lua55
33    }
34}
35
36impl Default for LexerConfig {
37    fn default() -> Self {
38        LexerConfig {
39            language_level: LuaLanguageLevel::Lua54,
40            non_std_symbols: LuaNonStdSymbolSet::new(),
41        }
42    }
43}