ソースを参照

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

pull/26/head
calixteman 7年前
committed by Max Brunsfeld
コミット
ff4fc1c785
5個のファイルの変更39904行の追加38874行の削除
  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 ファイルの表示

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

+ 2
- 0
grammar.js ファイルの表示

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

+ 24
- 0
src/grammar.json ファイルの表示

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

+ 4
- 0
src/node-types.json ファイルの表示

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

+ 39868
- 38872
src/parser.c
ファイル差分が大きすぎるため省略します
ファイルの表示


読み込み中…
キャンセル
保存