@@ -58,6 +58,8 @@ static bool is_exp_sentinel(char chr) {
5858 case 'd' :
5959 case 'E' :
6060 case 'e' :
61+ case 'Q' :
62+ case 'q' :
6163 return true;
6264 default :
6365 return false;
@@ -113,6 +115,7 @@ static BoolOrErr scan_number(TSLexer *lexer) {
113115 advance (lexer );
114116 if (lexer -> lookahead == '+' || lexer -> lookahead == '-' ) {
115117 advance (lexer );
118+ lexer -> mark_end (lexer );
116119 }
117120 switch (scan_int (lexer )) {
118121 case False :
@@ -122,7 +125,6 @@ static BoolOrErr scan_number(TSLexer *lexer) {
122125 case Error :
123126 return Error ;
124127 }
125- lexer -> mark_end (lexer );
126128 lexer -> result_symbol = FLOAT_LITERAL ;
127129 }
128130 }
@@ -165,13 +167,13 @@ static bool skip_literal_continuation_sequence(TSLexer *lexer) {
165167 return true;
166168 }
167169
168- skip (lexer );
170+ advance (lexer );
169171 while (iswspace (lexer -> lookahead )) {
170- skip (lexer );
172+ advance (lexer );
171173 }
172- // second '&' required to continue the literal
174+ // second '&' technically required to continue the literal
173175 if (lexer -> lookahead == '&' ) {
174- skip (lexer );
176+ advance (lexer );
175177 return true;
176178 }
177179 return false;
@@ -209,7 +211,7 @@ static bool scan_hollerith_constant(TSLexer *lexer) {
209211 advance (lexer );
210212
211213 // Read exactly 'n' characters
212- for (int i = 0 ; i < length ; i ++ ) {
214+ for (unsigned i = 0 ; i < length ; i ++ ) {
213215 if (!lexer -> lookahead || lexer -> eof (lexer )) {
214216 return false;
215217 }
@@ -377,6 +379,7 @@ static bool scan_string_literal(TSLexer *lexer) {
377379 // the end of the literal. We also need to check that an
378380 // escaped quote isn't split in half by a line
379381 // continuation -- people do this!
382+ lexer -> mark_end (lexer );
380383 skip_literal_continuation_sequence (lexer );
381384 if (lexer -> lookahead != opening_quote ) {
382385 return true;
0 commit comments