Explorar el Código

Add u|U|u8 string|char support (#36)

pull/29/head
calixteman hace 6 años
cometido por Max Brunsfeld
padre
commit
2ed529f075
Se han modificado 5 ficheros con 39063 adiciones y 38803 borrados
  1. +4
    -4
      grammar.js
  2. +24
    -0
      src/grammar.json
  3. +24
    -0
      src/node-types.json
  4. +38998
    -38798
      src/parser.c
  5. +13
    -1
      test/corpus/expressions.txt

+ 4
- 4
grammar.js Ver fichero

@ -773,26 +773,26 @@ module.exports = grammar({
},
char_literal: $ => seq(
choice('L\'', '\''),
choice('L\'', 'u\'', 'U\'', 'u8\'', '\''),
choice(
$.escape_sequence,
token.immediate(/[^\n']/)
),
'\''
),
concatenated_string: $ => seq(
$.string_literal,
repeat1($.string_literal)
),
string_literal: $ => seq(
choice('L"', '"'),
choice('L"', 'u"', 'U"', 'u8"', '"'),
repeat(choice(
token.immediate(prec(1, /[^\\"\n]+/)),
$.escape_sequence
)),
'"'
'"',
),
escape_sequence: $ => token.immediate(seq(

+ 24
- 0
src/grammar.json Ver fichero

@ -4905,6 +4905,18 @@
"type": "STRING",
"value": "L'"
},
{
"type": "STRING",
"value": "u'"
},
{
"type": "STRING",
"value": "U'"
},
{
"type": "STRING",
"value": "u8'"
},
{
"type": "STRING",
"value": "'"
@ -4959,6 +4971,18 @@
"type": "STRING",
"value": "L\""
},
{
"type": "STRING",
"value": "u\""
},
{
"type": "STRING",
"value": "U\""
},
{
"type": "STRING",
"value": "u8\""
},
{
"type": "STRING",
"value": "\""

+ 24
- 0
src/node-types.json Ver fichero

@ -2893,6 +2893,14 @@
"type": "L'",
"named": false
},
{
"type": "U\"",
"named": false
},
{
"type": "U'",
"named": false
},
{
"type": "[",
"named": false
@ -3069,6 +3077,22 @@
"type": "typedef",
"named": false
},
{
"type": "u\"",
"named": false
},
{
"type": "u'",
"named": false
},
{
"type": "u8\"",
"named": false
},
{
"type": "u8'",
"named": false
},
{
"type": "union",
"named": false

+ 38998
- 38798
src/parser.c
La diferencia del archivo ha sido suprimido porque es demasiado grande
Ver fichero


+ 13
- 1
test/corpus/expressions.txt Ver fichero

@ -118,6 +118,9 @@ int main() {
"b" "c" "d";
"\"hi\"";
L"bonjour";
u"guten morgen";
U"buenos dias";
u8"buongiorno";
}
---
@ -130,6 +133,9 @@ int main() {
(expression_statement (string_literal))
(expression_statement (concatenated_string (string_literal) (string_literal) (string_literal)))
(expression_statement (string_literal (escape_sequence) (escape_sequence)))
(expression_statement (string_literal))
(expression_statement (string_literal))
(expression_statement (string_literal))
(expression_statement (string_literal)))))
============================================
@ -142,6 +148,9 @@ int main() {
'\t';
'\'';
L'b';
u'c';
U'\xa1';
u8'\x1A';
}
---
@ -155,7 +164,10 @@ int main() {
(expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal)))))
(expression_statement (char_literal))
(expression_statement (char_literal))
(expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal (escape_sequence))))))
============================================
Field access

Cargando…
Cancelar
Guardar