Skip to content

Commit b45a5bc

Browse files
authored
Merge pull request m-novikov#47 from kristijanhusak/feature/postgres-alias
Add support for postgres aliases with double quotes
2 parents f5ed7f1 + 858d230 commit b45a5bc

File tree

4 files changed

+34401
-30202
lines changed

4 files changed

+34401
-30202
lines changed

grammar.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -893,11 +893,11 @@ module.exports = grammar({
893893
seq(
894894
optional(
895895
seq(
896-
field('schema', $.identifier),
896+
field('schema', $._alias_identifier),
897897
'.',
898898
),
899899
),
900-
field('table_alias', $.identifier),
900+
field('table_alias', $._alias_identifier),
901901
'.',
902902
),
903903
),
@@ -961,11 +961,11 @@ module.exports = grammar({
961961
seq(
962962
optional(
963963
seq(
964-
field('schema', $.identifier),
964+
field('schema', $._alias_identifier),
965965
'.',
966966
),
967967
),
968-
field('table_alias', $.identifier),
968+
field('table_alias', $._alias_identifier),
969969
'.',
970970
),
971971
),
@@ -1111,11 +1111,16 @@ module.exports = grammar({
11111111
),
11121112
),
11131113

1114+
_alias_identifier : $ => choice(
1115+
$.identifier,
1116+
alias($._double_quote_string, $.identifier),
1117+
),
1118+
11141119
_alias: $ => choice(
1115-
field('alias', $.identifier),
1120+
field('alias', $._alias_identifier),
11161121
seq(
11171122
$.keyword_as,
1118-
field('alias', $.identifier),
1123+
field('alias', $._alias_identifier),
11191124
),
11201125
),
11211126

@@ -1165,7 +1170,7 @@ module.exports = grammar({
11651170
optional(
11661171
seq(
11671172
optional($.keyword_as),
1168-
field('table_alias', $.identifier),
1173+
field('table_alias', $._alias_identifier),
11691174
optional(alias($._column_list_without_order, $.column_list)),
11701175
),
11711176
),
@@ -1430,9 +1435,10 @@ module.exports = grammar({
14301435
$.keyword_null,
14311436
),
14321437
),
1433-
_literal_string: _ => choice(
1438+
_double_quote_string: _ => seq('"', /[^"]*/, '"'),
1439+
_literal_string: $ => choice(
14341440
seq("'", /[^']*/, "'"),
1435-
seq('"', /[^"]*/, '"'),
1441+
$._double_quote_string,
14361442
),
14371443
_number: _ => /\d+/,
14381444

src/grammar.json

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3856,7 +3856,7 @@
38563856
"name": "schema",
38573857
"content": {
38583858
"type": "SYMBOL",
3859-
"name": "identifier"
3859+
"name": "_alias_identifier"
38603860
}
38613861
},
38623862
{
@@ -3875,7 +3875,7 @@
38753875
"name": "table_alias",
38763876
"content": {
38773877
"type": "SYMBOL",
3878-
"name": "identifier"
3878+
"name": "_alias_identifier"
38793879
}
38803880
},
38813881
{
@@ -4079,7 +4079,7 @@
40794079
"name": "schema",
40804080
"content": {
40814081
"type": "SYMBOL",
4082-
"name": "identifier"
4082+
"name": "_alias_identifier"
40834083
}
40844084
},
40854085
{
@@ -4098,7 +4098,7 @@
40984098
"name": "table_alias",
40994099
"content": {
41004100
"type": "SYMBOL",
4101-
"name": "identifier"
4101+
"name": "_alias_identifier"
41024102
}
41034103
},
41044104
{
@@ -4603,6 +4603,24 @@
46034603
}
46044604
]
46054605
},
4606+
"_alias_identifier": {
4607+
"type": "CHOICE",
4608+
"members": [
4609+
{
4610+
"type": "SYMBOL",
4611+
"name": "identifier"
4612+
},
4613+
{
4614+
"type": "ALIAS",
4615+
"content": {
4616+
"type": "SYMBOL",
4617+
"name": "_double_quote_string"
4618+
},
4619+
"named": true,
4620+
"value": "identifier"
4621+
}
4622+
]
4623+
},
46064624
"_alias": {
46074625
"type": "CHOICE",
46084626
"members": [
@@ -4611,7 +4629,7 @@
46114629
"name": "alias",
46124630
"content": {
46134631
"type": "SYMBOL",
4614-
"name": "identifier"
4632+
"name": "_alias_identifier"
46154633
}
46164634
},
46174635
{
@@ -4626,7 +4644,7 @@
46264644
"name": "alias",
46274645
"content": {
46284646
"type": "SYMBOL",
4629-
"name": "identifier"
4647+
"name": "_alias_identifier"
46304648
}
46314649
}
46324650
]
@@ -4828,7 +4846,7 @@
48284846
"name": "table_alias",
48294847
"content": {
48304848
"type": "SYMBOL",
4831-
"name": "identifier"
4849+
"name": "_alias_identifier"
48324850
}
48334851
},
48344852
{
@@ -6406,6 +6424,23 @@
64066424
]
64076425
}
64086426
},
6427+
"_double_quote_string": {
6428+
"type": "SEQ",
6429+
"members": [
6430+
{
6431+
"type": "STRING",
6432+
"value": "\""
6433+
},
6434+
{
6435+
"type": "PATTERN",
6436+
"value": "[^\"]*"
6437+
},
6438+
{
6439+
"type": "STRING",
6440+
"value": "\""
6441+
}
6442+
]
6443+
},
64096444
"_literal_string": {
64106445
"type": "CHOICE",
64116446
"members": [
@@ -6427,21 +6462,8 @@
64276462
]
64286463
},
64296464
{
6430-
"type": "SEQ",
6431-
"members": [
6432-
{
6433-
"type": "STRING",
6434-
"value": "\""
6435-
},
6436-
{
6437-
"type": "PATTERN",
6438-
"value": "[^\"]*"
6439-
},
6440-
{
6441-
"type": "STRING",
6442-
"value": "\""
6443-
}
6444-
]
6465+
"type": "SYMBOL",
6466+
"name": "_double_quote_string"
64456467
}
64466468
]
64476469
},

0 commit comments

Comments
 (0)