Bladeren bron

Handle L-strings and L-chars (#25)

pull/26/head
calixteman 7 jaren geleden
committed by Max Brunsfeld
bovenliggende
commit
ff4fc1c785
5 gewijzigde bestanden met toevoegingen van 39904 en 38874 verwijderingen
  1. +6
    -2
      corpus/expressions.txt
  2. +2
    -0
      grammar.js
  3. +24
    -0
      src/grammar.json
  4. +4
    -0
      src/node-types.json
  5. +39868
    -38872
      src/parser.c

+ 6
- 2
corpus/expressions.txt Bestand weergeven

@ -117,6 +117,7 @@ int main() {
"a"; "a";
"b" "c" "d"; "b" "c" "d";
"\"hi\""; "\"hi\"";
L"bonjour";
} }
--- ---
@ -128,7 +129,8 @@ int main() {
(compound_statement (compound_statement
(expression_statement (string_literal)) (expression_statement (string_literal))
(expression_statement (concatenated_string (string_literal) (string_literal) (string_literal))) (expression_statement (concatenated_string (string_literal) (string_literal) (string_literal)))
(expression_statement (string_literal (escape_sequence) (escape_sequence))))))
(expression_statement (string_literal (escape_sequence) (escape_sequence)))
(expression_statement (string_literal)))))
============================================ ============================================
Character literals Character literals
@ -139,6 +141,7 @@ int main() {
'\0'; '\0';
'\t'; '\t';
'\''; '\'';
L'b';
} }
--- ---
@ -151,7 +154,8 @@ int main() {
(expression_statement (char_literal)) (expression_statement (char_literal))
(expression_statement (char_literal (escape_sequence))) (expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal (escape_sequence))) (expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal (escape_sequence))))))
(expression_statement (char_literal (escape_sequence)))
(expression_statement (char_literal)))))
============================================ ============================================
Field access Field access

+ 2
- 0
grammar.js Bestand weergeven

@ -711,6 +711,7 @@ module.exports = grammar({
}, },
char_literal: $ => seq( char_literal: $ => seq(
optional('L'),
'\'', '\'',
choice( choice(
$.escape_sequence, $.escape_sequence,
@ -725,6 +726,7 @@ module.exports = grammar({
), ),
string_literal: $ => seq( string_literal: $ => seq(
optional('L'),
'"', '"',
repeat(choice( repeat(choice(
token.immediate(prec(1, /[^\\"\n]+/)), token.immediate(prec(1, /[^\\"\n]+/)),

+ 24
- 0
src/grammar.json Bestand weergeven

@ -4214,6 +4214,18 @@
"char_literal": { "char_literal": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "L"
},
{
"type": "BLANK"
}
]
},
{ {
"type": "STRING", "type": "STRING",
"value": "'" "value": "'"
@ -4259,6 +4271,18 @@
"string_literal": { "string_literal": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "L"
},
{
"type": "BLANK"
}
]
},
{ {
"type": "STRING", "type": "STRING",
"value": "\"" "value": "\""

+ 4
- 0
src/node-types.json Bestand weergeven

@ -711,6 +711,10 @@
"type": "number_literal", "type": "number_literal",
"named": true "named": true
}, },
{
"type": "L",
"named": false
},
{ {
"type": "'", "type": "'",
"named": false "named": false

+ 39868
- 38872
src/parser.c
Diff onderdrukt omdat het te groot bestand
Bestand weergeven


Laden…
Annuleren
Opslaan