Add quoted argument

This commit is contained in:
Uy Ha 2021-04-11 17:27:20 +02:00
parent c81ec16963
commit 539e1dc77e
5 changed files with 1026 additions and 657 deletions

View file

@ -0,0 +1,49 @@
=========================
One empty quoted argument
=========================
message("")
---
(source_file
(command_invocation
(identifier)
(arguments
(argument (quoted_argument))
)
)
)
===================
One quoted argument
===================
message("An argument")
---
(source_file
(command_invocation
(identifier)
(arguments
(argument (quoted_argument))
)
)
)
====================
Two quoted arguments
====================
message("First argument" "Second argument")
---
(source_file
(command_invocation
(identifier)
(arguments
(argument (quoted_argument))
(seperation (space))
(argument (quoted_argument))
)
)
)

View file

@ -22,6 +22,7 @@ module.exports = grammar({
argument: $ => choice(
$.bracket_argument,
$.quoted_argument,
$.unquoted_argument,
),
@ -35,6 +36,13 @@ module.exports = grammar({
_bracket_content: $ => repeat1(/[^\]]/),
_bracket_close: $ => seq(']', repeat('='), ']'),
quoted_argument: $ => seq('"', repeat($._quoted_element), '"'),
_quoted_element: $ => choice(
/[^\\"]/,
$.escape_sequence,
seq('\\', $.newline),
),
unquoted_argument: $ => repeat1(
choice(
/[^ ()#\"\\]/,

View file

@ -86,6 +86,10 @@
"type": "SYMBOL",
"name": "bracket_argument"
},
{
"type": "SYMBOL",
"name": "quoted_argument"
},
{
"type": "SYMBOL",
"name": "unquoted_argument"
@ -164,6 +168,52 @@
}
]
},
"quoted_argument": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_quoted_element"
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"_quoted_element": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\\\\"]"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "SYMBOL",
"name": "newline"
}
]
}
]
},
"unquoted_argument": {
"type": "REPEAT1",
"content": {

View file

@ -11,6 +11,10 @@
"type": "bracket_argument",
"named": true
},
{
"type": "quoted_argument",
"named": true
},
{
"type": "unquoted_argument",
"named": true
@ -89,6 +93,25 @@
]
}
},
{
"type": "quoted_argument",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "newline",
"named": true
}
]
}
},
{
"type": "seperation",
"named": true,
@ -138,6 +161,10 @@
]
}
},
{
"type": "\"",
"named": false
},
{
"type": "(",
"named": false
@ -154,6 +181,10 @@
"type": "[",
"named": false
},
{
"type": "\\",
"named": false
},
{
"type": "\\n",
"named": false

File diff suppressed because it is too large Load diff