1- use crate :: { LuaNonStdSymbol , kind:: LuaTokenKind , parser_error:: LuaParseError , text:: Reader } ;
1+ use crate :: {
2+ LexerState , LuaNonStdSymbol , kind:: LuaTokenKind , parser_error:: LuaParseError , text:: Reader ,
3+ } ;
24
35use super :: { is_name_continue, is_name_start, lexer_config:: LexerConfig , token_data:: LuaTokenData } ;
46
57pub struct LuaLexer < ' a > {
68 reader : Reader < ' a > ,
79 lexer_config : LexerConfig ,
810 errors : Option < & ' a mut Vec < LuaParseError > > ,
9- state : LuaLexerState ,
10- }
11-
12- /// This enum allows preserving lexer state between reader resets. This is used
13- /// when lexer doesn't see the whole input source, and only sees a reader
14- /// for each individual line. It happens when we're lexing
15- /// code blocks in comments.
16- #[ derive( Debug , Clone , Copy , PartialEq , Eq ) ]
17- pub enum LuaLexerState {
18- Normal ,
19- String ( char ) ,
20- LongString ( usize ) ,
21- LongComment ( usize ) ,
11+ state : LexerState ,
2212}
2313
2414impl < ' a > LuaLexer < ' a > {
@@ -27,12 +17,12 @@ impl<'a> LuaLexer<'a> {
2717 lexer_config : LexerConfig ,
2818 errors : Option < & ' a mut Vec < LuaParseError > > ,
2919 ) -> Self {
30- Self :: new_with_state ( reader, LuaLexerState :: Normal , lexer_config, errors)
20+ Self :: new_with_state ( reader, LexerState :: Normal , lexer_config, errors)
3121 }
3222
3323 pub fn new_with_state (
3424 reader : Reader < ' a > ,
35- state : LuaLexerState ,
25+ state : LexerState ,
3626 lexer_config : LexerConfig ,
3727 errors : Option < & ' a mut Vec < LuaParseError > > ,
3828 ) -> Self {
@@ -49,10 +39,10 @@ impl<'a> LuaLexer<'a> {
4939
5040 while !self . reader . is_eof ( ) {
5141 let kind = match self . state {
52- LuaLexerState :: Normal => self . lex ( ) ,
53- LuaLexerState :: String ( quote) => self . lex_string ( quote) ,
54- LuaLexerState :: LongString ( sep) => self . lex_long_string ( sep) ,
55- LuaLexerState :: LongComment ( sep) => {
42+ LexerState :: Normal => self . lex ( ) ,
43+ LexerState :: String ( quote) => self . lex_string ( quote) ,
44+ LexerState :: LongString ( sep) => self . lex_long_string ( sep) ,
45+ LexerState :: LongComment ( sep) => {
5646 self . lex_long_string ( sep) ;
5747 LuaTokenKind :: TkLongComment
5848 }
@@ -67,7 +57,7 @@ impl<'a> LuaLexer<'a> {
6757 tokens
6858 }
6959
70- pub fn get_state ( & self ) -> LuaLexerState {
60+ pub fn get_state ( & self ) -> LexerState {
7161 self . state
7262 }
7363
@@ -146,7 +136,7 @@ impl<'a> LuaLexer<'a> {
146136 let sep = self . skip_sep ( ) ;
147137 if self . reader . current_char ( ) == '[' {
148138 self . reader . bump ( ) ;
149- self . state = LuaLexerState :: LongComment ( sep) ;
139+ self . state = LexerState :: LongComment ( sep) ;
150140 self . lex_long_string ( sep) ;
151141 return LuaTokenKind :: TkLongComment ;
152142 }
@@ -167,7 +157,7 @@ impl<'a> LuaLexer<'a> {
167157 }
168158
169159 self . reader . bump ( ) ;
170- self . state = LuaLexerState :: LongString ( sep) ;
160+ self . state = LexerState :: LongString ( sep) ;
171161 self . lex_long_string ( sep)
172162 }
173163 '=' => {
@@ -253,7 +243,7 @@ impl<'a> LuaLexer<'a> {
253243 }
254244
255245 self . reader . bump ( ) ;
256- self . state = LuaLexerState :: String ( quote) ;
246+ self . state = LexerState :: String ( quote) ;
257247 self . lex_string ( quote)
258248 }
259249 '.' => {
@@ -537,7 +527,7 @@ impl<'a> LuaLexer<'a> {
537527 }
538528
539529 if self . reader . current_char ( ) == quote || !self . reader . is_eof ( ) {
540- self . state = LuaLexerState :: Normal ;
530+ self . state = LexerState :: Normal ;
541531 }
542532
543533 if self . reader . current_char ( ) != quote {
@@ -569,7 +559,7 @@ impl<'a> LuaLexer<'a> {
569559 }
570560
571561 if end || !self . reader . is_eof ( ) {
572- self . state = LuaLexerState :: Normal ;
562+ self . state = LexerState :: Normal ;
573563 }
574564
575565 if !end {
0 commit comments