diff --git a/src/scanner.c b/src/scanner.c index 269f6b2..49096a0 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -132,8 +132,8 @@ static inline bool process_float_literal(TSLexer *lexer) { if (lexer->lookahead == '.') { has_fraction = true; advance(lexer); - if (iswalpha(lexer->lookahead)) { - // The dot is followed by a letter: 1.max(2) => not a float but an integer + if (iswalpha(lexer->lookahead) || lexer->lookahead == '_') { + // The dot is followed by a letter or _: 1.max(2) => not a float but an integer return false; } diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index 998d590..8c22904 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -994,6 +994,7 @@ mystruct.myfield; foo().x; value.0.1.iter(); 1.max(2); +1._method(); -------------------------------------------------------------------------------- @@ -1024,7 +1025,13 @@ value.0.1.iter(); (integer_literal) (field_identifier)) (arguments - (integer_literal))))) + (integer_literal)))) + (expression_statement + (call_expression + (field_expression + (integer_literal) + (field_identifier)) + (arguments)))) ================================================================================ Method call expressions