diff --git a/grammar.js b/grammar.js index 99e979d..91b2928 100644 --- a/grammar.js +++ b/grammar.js @@ -36,8 +36,8 @@ module.exports = grammar({ name: 'c', externals: $ => [ - $.raw_string_delimiter, - $.raw_string_content, + $.gnu_raw_string_delimiter, + $.gnu_raw_string_content, ], conflicts: $ => [ @@ -982,21 +982,21 @@ module.exports = grammar({ _string: $ => prec.left(choice( $.string_literal, - $.raw_string_literal, + $.gnu_raw_string_literal, $.concatenated_string, )), - raw_string_literal: $ => seq( + gnu_raw_string_literal: $ => seq( choice('R"', 'LR"', 'uR"', 'UR"', 'u8R"'), choice( seq( - field('delimiter', $.raw_string_delimiter), + field('delimiter', $.gnu_raw_string_delimiter), '(', - $.raw_string_content, + $.gnu_raw_string_content, ')', - $.raw_string_delimiter, + $.gnu_raw_string_delimiter, ), - seq('(', $.raw_string_content, ')'), + seq('(', $.gnu_raw_string_content, ')'), ), '"', ), @@ -1319,11 +1319,11 @@ module.exports = grammar({ // Identifier is added to parse macros that are strings, like PRIu64. concatenated_string: $ => prec.right(seq( choice( - seq($.identifier, choice($.string_literal, $.raw_string_literal)), - seq(choice($.string_literal, $.raw_string_literal), choice($.string_literal, $.raw_string_literal)), - seq(choice($.string_literal, $.raw_string_literal), $.identifier), + seq($.identifier, choice($.string_literal, $.gnu_raw_string_literal)), + seq(choice($.string_literal, $.gnu_raw_string_literal), choice($.string_literal, $.gnu_raw_string_literal)), + seq(choice($.string_literal, $.gnu_raw_string_literal), $.identifier), ), - repeat(choice($.string_literal, $.raw_string_literal, $.identifier)), + repeat(choice($.string_literal, $.gnu_raw_string_literal, $.identifier)), )), string_literal: $ => seq( diff --git a/src/scanner.c b/src/scanner.c index 78ef5db..9044c0a 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -5,7 +5,7 @@ #include #include -enum TokenType { RAW_STRING_DELIMITER, RAW_STRING_CONTENT }; +enum TokenType { GNU_RAW_STRING_DELIMITER, GNU_RAW_STRING_CONTENT }; /// The spec limits delimiters to 16 chars #define MAX_DELIMITER_LENGTH 16 @@ -23,7 +23,7 @@ static inline void reset(Scanner *scanner) { } /// Scan the raw string delimiter in R"delimiter(content)delimiter" -static bool scan_raw_string_delimiter(Scanner *scanner, TSLexer *lexer) { +static bool scan_gnu_raw_string_delimiter(Scanner *scanner, TSLexer *lexer) { if (scanner->delimiter_length > 0) { // Closing delimiter: must exactly match the opening delimiter. // We already checked this when scanning content, but this is how we @@ -56,12 +56,12 @@ static bool scan_raw_string_delimiter(Scanner *scanner, TSLexer *lexer) { } /// Scan the raw string content in R"delimiter(content)delimiter" -static bool scan_raw_string_content(Scanner *scanner, TSLexer *lexer) { +static bool scan_gnu_raw_string_content(Scanner *scanner, TSLexer *lexer) { // The progress made through the delimiter since the last ')'. // The delimiter may not contain ')' so a single counter suffices. for (int delimiter_index = -1;;) { // If we hit EOF, consider the content to terminate there. - // This forms an incomplete raw_string_literal, and models the code + // This forms an incomplete gnu_raw_string_literal, and models the code // well. if (lexer->eof(lexer)) { lexer->mark_end(lexer); @@ -103,20 +103,20 @@ void *tree_sitter_c_external_scanner_create() { bool tree_sitter_c_external_scanner_scan(void *payload, TSLexer *lexer, const bool *valid_symbols) { Scanner *scanner = (Scanner *)payload; - if (valid_symbols[RAW_STRING_DELIMITER] && valid_symbols[RAW_STRING_CONTENT]) { + if (valid_symbols[GNU_RAW_STRING_DELIMITER] && valid_symbols[GNU_RAW_STRING_CONTENT]) { // we're in error recovery return false; } // No skipping leading whitespace: raw-string grammar is space-sensitive. - if (valid_symbols[RAW_STRING_DELIMITER]) { - lexer->result_symbol = RAW_STRING_DELIMITER; - return scan_raw_string_delimiter(scanner, lexer); + if (valid_symbols[GNU_RAW_STRING_DELIMITER]) { + lexer->result_symbol = GNU_RAW_STRING_DELIMITER; + return scan_gnu_raw_string_delimiter(scanner, lexer); } - if (valid_symbols[RAW_STRING_CONTENT]) { - lexer->result_symbol = RAW_STRING_CONTENT; - return scan_raw_string_content(scanner, lexer); + if (valid_symbols[GNU_RAW_STRING_CONTENT]) { + lexer->result_symbol = GNU_RAW_STRING_CONTENT; + return scan_gnu_raw_string_content(scanner, lexer); } return false; diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index b3e74b6..6beb4b0 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -1519,58 +1519,58 @@ const char *s6 = LR"FOO( (init_declarator (pointer_declarator (identifier)) - (raw_string_literal - (raw_string_content)))) + (gnu_raw_string_literal + (gnu_raw_string_content)))) (declaration (type_qualifier) (primitive_type) (init_declarator (pointer_declarator (identifier)) - (raw_string_literal - (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))) + (gnu_raw_string_literal + (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))) (declaration (type_qualifier) (primitive_type) (init_declarator (pointer_declarator (identifier)) - (raw_string_literal - (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))) + (gnu_raw_string_literal + (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))) (declaration (type_qualifier) (primitive_type) (init_declarator (pointer_declarator (identifier)) - (raw_string_literal - (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))) + (gnu_raw_string_literal + (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))) (declaration (type_qualifier) (primitive_type) (init_declarator (pointer_declarator (identifier)) - (raw_string_literal - (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))) + (gnu_raw_string_literal + (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))) (declaration (type_qualifier) (primitive_type) (init_declarator (pointer_declarator (identifier)) - (raw_string_literal - (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter))))) + (gnu_raw_string_literal + (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter))))) ================================================================================ Concatenated raw strings @@ -1597,24 +1597,24 @@ hello)RAW" L"world"); function: (identifier) arguments: (argument_list (concatenated_string - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)) (identifier) - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))))) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (concatenated_string - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)) (identifier))))) (expression_statement (call_expression @@ -1623,19 +1623,19 @@ hello)RAW" L"world"); (concatenated_string (string_literal (string_content)) - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))))) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (concatenated_string - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)) (string_literal (string_content)) (identifier))))) @@ -1645,10 +1645,10 @@ hello)RAW" L"world"); arguments: (argument_list (concatenated_string (identifier) - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)) (identifier))))) (expression_statement (call_expression @@ -1656,10 +1656,10 @@ hello)RAW" L"world"); arguments: (argument_list (concatenated_string (identifier) - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)))))) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)))))) (expression_statement (call_expression function: (identifier) @@ -1667,9 +1667,9 @@ hello)RAW" L"world"); (concatenated_string (string_literal (string_content)) - (raw_string_literal - delimiter: (raw_string_delimiter) - (raw_string_content) - (raw_string_delimiter)) + (gnu_raw_string_literal + delimiter: (gnu_raw_string_delimiter) + (gnu_raw_string_content) + (gnu_raw_string_delimiter)) (string_literal (string_content)))))))