emmylua_parser/lexer/
lexer_config.rs1use 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}