refac: fluent.syntax -> fluent-syntax
This commit is contained in:
1
fluent-syntax/src/test/resources/structure_fixtures/.gitattributes
vendored
Normal file
1
fluent-syntax/src/test/resources/structure_fixtures/.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
crlf.ftl eol=crlf
|
||||
@@ -0,0 +1,2 @@
|
||||
err1 = { foo.23 }
|
||||
err2 = { foo. }
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 13
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err1 = { foo.23 }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 18
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 31,
|
||||
"end": 31
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err2 = { foo. }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 34
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 34
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
err1 = { -brand.gender }
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0019",
|
||||
"arguments": [],
|
||||
"message": "Attributes of terms cannot be used as placeables",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 23,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err1 = { -brand.gender }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 25
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 25
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
err1 =
|
||||
{ foo.bar ->
|
||||
[1] One
|
||||
*[2] Two
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0018",
|
||||
"arguments": [],
|
||||
"message": "Attributes of messages cannot be used as selectors",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 21,
|
||||
"end": 21
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err1 =\n { foo.bar ->\n [1] One\n *[2] Two\n }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 62
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 62
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
foo = Value
|
||||
.attr = Value 2
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 11
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 11
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 17
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 27
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 27
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 12,
|
||||
"end": 27
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 27
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 28
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
key1 = Value 1
|
||||
.attr =
|
||||
|
||||
key2 =
|
||||
.attr =
|
||||
|
||||
key3 =
|
||||
.attr1 = Attr 1
|
||||
.attr2 =
|
||||
|
||||
key4 =
|
||||
.attr1 =
|
||||
.attr2 = Attr 2
|
||||
|
||||
key5 =
|
||||
.attr1 =
|
||||
.attr2 =
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0012",
|
||||
"arguments": [],
|
||||
"message": "Expected value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 26,
|
||||
"end": 26
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key1 = Value 1\n .attr =\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 28
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0012",
|
||||
"arguments": [],
|
||||
"message": "Expected value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 46,
|
||||
"end": 46
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key2 =\n .attr =\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 28,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0012",
|
||||
"arguments": [],
|
||||
"message": "Expected value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 87,
|
||||
"end": 87
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key3 =\n .attr1 = Attr 1\n .attr2 =\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 48,
|
||||
"end": 89
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0012",
|
||||
"arguments": [],
|
||||
"message": "Expected value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 108,
|
||||
"end": 108
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key4 =\n .attr1 =\n .attr2 = Attr 2\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 89,
|
||||
"end": 130
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0012",
|
||||
"arguments": [],
|
||||
"message": "Expected value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 149,
|
||||
"end": 149
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key5 =\n .attr1 =\n .attr2 =\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 130,
|
||||
"end": 163
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 163
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
key = Value
|
||||
.label
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 22,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key = Value\n .label\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
### NOTE: Disable final newline insertion and trimming when editing this file.
|
||||
|
||||
key01 = Value 01
|
||||
|
||||
key02 = Value 02
|
||||
|
||||
|
||||
key03 =
|
||||
|
||||
Value 03
|
||||
|
||||
Continued
|
||||
|
||||
# There are four spaces on the line between "Value 04" and "Continued".
|
||||
key04 =
|
||||
|
||||
Value 04
|
||||
|
||||
Continued
|
||||
|
||||
# There are four spaces on the line following "Value 05".
|
||||
key05 =
|
||||
Value 05
|
||||
|
||||
# There are four spaces on the line following "Value 06".
|
||||
key06 = Value 06
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "NOTE: Disable final newline insertion and trimming when editing this file.",
|
||||
"type": "ResourceComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 78
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 80,
|
||||
"end": 85
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 88,
|
||||
"end": 96
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 88,
|
||||
"end": 96
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 80,
|
||||
"end": 96
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key02",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 98,
|
||||
"end": 103
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 02",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 106,
|
||||
"end": 114
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 106,
|
||||
"end": 114
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 98,
|
||||
"end": 114
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key03",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 117,
|
||||
"end": 122
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 03\n\nContinued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 130,
|
||||
"end": 153
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 126,
|
||||
"end": 153
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 117,
|
||||
"end": 153
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key04",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 227,
|
||||
"end": 232
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 04\n\nContinued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 240,
|
||||
"end": 267
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 236,
|
||||
"end": 267
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": {
|
||||
"content": "There are four spaces on the line between \"Value 04\" and \"Continued\".",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 155,
|
||||
"end": 226
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 155,
|
||||
"end": 267
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key05",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 327,
|
||||
"end": 332
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 05",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 339,
|
||||
"end": 347
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 335,
|
||||
"end": 347
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": {
|
||||
"content": "There are four spaces on the line following \"Value 05\".",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 269,
|
||||
"end": 326
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 269,
|
||||
"end": 347
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key06",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 411,
|
||||
"end": 416
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 06",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 419,
|
||||
"end": 427
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 419,
|
||||
"end": 427
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": {
|
||||
"content": "There are four spaces on the line following \"Value 06\".",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 353,
|
||||
"end": 410
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 353,
|
||||
"end": 427
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 432
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
err01 = { -2.4.5 }
|
||||
err02 = { -2.4. }
|
||||
err03 = { -.4 }
|
||||
err04 = { -2..4 }
|
||||
err05 = { 24d }
|
||||
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 14,
|
||||
"end": 14
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { -2.4.5 }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 33,
|
||||
"end": 33
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err02 = { -2.4. }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 19,
|
||||
"end": 37
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 48,
|
||||
"end": 48
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err03 = { -.4 }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 37,
|
||||
"end": 53
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"0-9"
|
||||
],
|
||||
"message": "Expected a character from range: \"0-9\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 66,
|
||||
"end": 66
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err04 = { -2..4 }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 53,
|
||||
"end": 71
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 83,
|
||||
"end": 83
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err05 = { 24d }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 71,
|
||||
"end": 87
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 87
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
err01 = { no-caps-name() }
|
||||
err02 = { BUILTIN(2: "foo") }
|
||||
err03 = { BUILTIN(key: foo) }
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0008",
|
||||
"arguments": [],
|
||||
"message": "The callee has to be an upper-case identifier or a term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 22,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { no-caps-name() }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 27
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0009",
|
||||
"arguments": [],
|
||||
"message": "The argument name has to be a simple identifier",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 46,
|
||||
"end": 46
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err02 = { BUILTIN(2: \"foo\") }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 27,
|
||||
"end": 57
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0014",
|
||||
"arguments": [],
|
||||
"message": "Expected literal",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 80,
|
||||
"end": 80
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err03 = { BUILTIN(key: foo) }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 57,
|
||||
"end": 87
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 87
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
# This is a comment with no new line
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "This is a comment with no new line",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 36
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 36
|
||||
}
|
||||
}
|
||||
14
fluent-syntax/src/test/resources/structure_fixtures/crlf.ftl
Normal file
14
fluent-syntax/src/test/resources/structure_fixtures/crlf.ftl
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
key01 = Value 01
|
||||
key02 =
|
||||
|
||||
Value 02
|
||||
Continued
|
||||
|
||||
.title = Title
|
||||
|
||||
# ERROR Unclosed StringLiteral
|
||||
err03 = { "str
|
||||
|
||||
# ERROR Missing newline after ->.
|
||||
err04 = { $sel -> }
|
||||
187
fluent-syntax/src/test/resources/structure_fixtures/crlf.json
Normal file
187
fluent-syntax/src/test/resources/structure_fixtures/crlf.json
Normal file
@@ -0,0 +1,187 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 2,
|
||||
"end": 7
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 18
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 18
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 2,
|
||||
"end": 18
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key02",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 25
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 02\nContinued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 35,
|
||||
"end": 58
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 31,
|
||||
"end": 58
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "title",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 67,
|
||||
"end": 72
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Title",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 75,
|
||||
"end": 80
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 75,
|
||||
"end": 80
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 66,
|
||||
"end": 80
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 80
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Comment",
|
||||
"content": "ERROR Unclosed StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 84,
|
||||
"end": 114
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0020",
|
||||
"arguments": [],
|
||||
"message": "Unterminated string expression",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 130,
|
||||
"end": 130
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err03 = { \"str\r\n\r\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 116,
|
||||
"end": 134
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Comment",
|
||||
"content": "ERROR Missing newline after ->.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 134,
|
||||
"end": 167
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
""
|
||||
],
|
||||
"message": "Expected token: \"\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 187,
|
||||
"end": 187
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err04 = { $sel -> }\r\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 169,
|
||||
"end": 190
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 190
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
### BE CAREFUL WHEN EDITING THIS FILE
|
||||
###
|
||||
### The last character in this file is the dash ("-") on line 8.
|
||||
### We want to test a literal which starts like a negative number.
|
||||
### Most editors automatically add a trailing newline at EOF.
|
||||
### If you edit this file make sure to turn this behavior off.
|
||||
|
||||
key1 = {-
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "BE CAREFUL WHEN EDITING THIS FILE\n\nThe last character in this file is the dash (\"-\") on line 8.\nWe want to test a literal which starts like a negative number.\nMost editors automatically add a trailing newline at EOF.\nIf you edit this file make sure to turn this behavior off.",
|
||||
"type": "ResourceComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 298
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 309,
|
||||
"end": 309
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key1 = {-",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 300,
|
||||
"end": 309
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 309
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
foo = Foo
|
||||
.attr = Foo Attr
|
||||
|
||||
bar = Bar
|
||||
.attr1 = Bar Attr 1
|
||||
.attr2 = Bar Attr 2
|
||||
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 9
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 11,
|
||||
"end": 15
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Foo Attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 26
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 26
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 26
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 26
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "bar",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 28,
|
||||
"end": 31
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Bar",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 34,
|
||||
"end": 37
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 34,
|
||||
"end": 37
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr1",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 43,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Bar Attr 1",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 51,
|
||||
"end": 61
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 51,
|
||||
"end": 61
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 42,
|
||||
"end": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 63,
|
||||
"end": 68
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Bar Attr 2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 71,
|
||||
"end": 81
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 71,
|
||||
"end": 81
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 62,
|
||||
"end": 81
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 28,
|
||||
"end": 81
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 82
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 10
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
## Literal text
|
||||
text-backslash-one = Value with \ a backslash
|
||||
text-backslash-two = Value with \\ two backslashes
|
||||
text-backslash-brace = Value with \{placeable}
|
||||
text-backslash-u = \u0041
|
||||
text-backslash-backslash-u = \\u0041
|
||||
|
||||
## String literals
|
||||
quote-in-string = {"\""}
|
||||
backslash-in-string = {"\\"}
|
||||
# ERROR Mismatched quote
|
||||
mismatched-quote = {"\\""}
|
||||
# ERROR Unknown escape
|
||||
unknown-escape = {"\x"}
|
||||
|
||||
## Unicode escapes
|
||||
string-unicode-sequence = {"\u0041"}
|
||||
string-escaped-unicode = {"\\u0041"}
|
||||
# ERROR Unknown escape
|
||||
unknown-unicode = {"\u000z"}
|
||||
|
||||
## Literal braces
|
||||
brace-open = An opening {"{"} brace.
|
||||
brace-close = A closing {"}"} brace.
|
||||
@@ -0,0 +1,673 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "Literal text",
|
||||
"type": "GroupComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 15
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "text-backslash-one",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 16,
|
||||
"end": 34
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value with \\ a backslash",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 37,
|
||||
"end": 61
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 37,
|
||||
"end": 61
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 16,
|
||||
"end": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "text-backslash-two",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 62,
|
||||
"end": 80
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value with \\\\ two backslashes",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 83,
|
||||
"end": 112
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 83,
|
||||
"end": 112
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 62,
|
||||
"end": 112
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "text-backslash-brace",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 113,
|
||||
"end": 133
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value with \\",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 136,
|
||||
"end": 148
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "placeable",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 149,
|
||||
"end": 158
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 149,
|
||||
"end": 158
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 148,
|
||||
"end": 159
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 136,
|
||||
"end": 159
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 113,
|
||||
"end": 159
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "text-backslash-u",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 160,
|
||||
"end": 176
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "\\u0041",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 179,
|
||||
"end": 185
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 179,
|
||||
"end": 185
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 160,
|
||||
"end": 185
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "text-backslash-backslash-u",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 186,
|
||||
"end": 212
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "\\\\u0041",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 215,
|
||||
"end": 222
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 215,
|
||||
"end": 222
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 186,
|
||||
"end": 222
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "String literals",
|
||||
"type": "GroupComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 224,
|
||||
"end": 242
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "quote-in-string",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 243,
|
||||
"end": 258
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": "\\\"",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 262,
|
||||
"end": 266
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 261,
|
||||
"end": 267
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 261,
|
||||
"end": 267
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 243,
|
||||
"end": 267
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "backslash-in-string",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 268,
|
||||
"end": 287
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": "\\\\",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 291,
|
||||
"end": 295
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 290,
|
||||
"end": 296
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 290,
|
||||
"end": 296
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 268,
|
||||
"end": 296
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Mismatched quote",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 297,
|
||||
"end": 321
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 346,
|
||||
"end": 346
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "mismatched-quote = {\"\\\\\"\"}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 322,
|
||||
"end": 349
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Unknown escape",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 349,
|
||||
"end": 371
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0025",
|
||||
"arguments": [
|
||||
"x"
|
||||
],
|
||||
"message": "Unknown escape sequence: \\x.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 392,
|
||||
"end": 392
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "unknown-escape = {\"\\x\"}\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 372,
|
||||
"end": 397
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "Unicode escapes",
|
||||
"type": "GroupComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 397,
|
||||
"end": 415
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "string-unicode-sequence",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 416,
|
||||
"end": 439
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": "\\u0041",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 443,
|
||||
"end": 451
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 442,
|
||||
"end": 452
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 442,
|
||||
"end": 452
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 416,
|
||||
"end": 452
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "string-escaped-unicode",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 453,
|
||||
"end": 475
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": "\\\\u0041",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 479,
|
||||
"end": 488
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 478,
|
||||
"end": 489
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 478,
|
||||
"end": 489
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 453,
|
||||
"end": 489
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Unknown escape",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 490,
|
||||
"end": 512
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0026",
|
||||
"arguments": [
|
||||
"\\u000z"
|
||||
],
|
||||
"message": "Invalid Unicode escape sequence: \\u000z.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 538,
|
||||
"end": 538
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "unknown-unicode = {\"\\u000z\"}\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 513,
|
||||
"end": 543
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "Literal braces",
|
||||
"type": "GroupComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 543,
|
||||
"end": 560
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "brace-open",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 561,
|
||||
"end": 571
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "An opening ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 574,
|
||||
"end": 585
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": "{",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 586,
|
||||
"end": 589
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 585,
|
||||
"end": 590
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": " brace.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 590,
|
||||
"end": 597
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 574,
|
||||
"end": 597
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 561,
|
||||
"end": 597
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "brace-close",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 598,
|
||||
"end": 609
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "A closing ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 612,
|
||||
"end": 622
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": "}",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 623,
|
||||
"end": 626
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 622,
|
||||
"end": 627
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": " brace.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 627,
|
||||
"end": 634
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 612,
|
||||
"end": 634
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 598,
|
||||
"end": 634
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 635
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
key = { FOO(arg1: 1,
|
||||
arg2: 2) }
|
||||
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "FunctionReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "FOO",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 11
|
||||
}
|
||||
},
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [
|
||||
{
|
||||
"type": "NamedArgument",
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"name": "arg1",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 12,
|
||||
"end": 16
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"value": "1",
|
||||
"type": "NumberLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 12,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "NamedArgument",
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"name": "arg2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 33,
|
||||
"end": 37
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"value": "2",
|
||||
"type": "NumberLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 39,
|
||||
"end": 40
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 33,
|
||||
"end": 40
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 11,
|
||||
"end": 41
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 41
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 43
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 43
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 43
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 44
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
err01 = A
|
||||
|
||||
key2 = {
|
||||
a }
|
||||
|
||||
key3 = { a
|
||||
}
|
||||
|
||||
key4 = {
|
||||
{ a }}
|
||||
205
fluent-syntax/src/test/resources/structure_fixtures/indent.json
Normal file
205
fluent-syntax/src/test/resources/structure_fixtures/indent.json
Normal file
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0002",
|
||||
"arguments": [],
|
||||
"message": "Expected an entry start",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": " err01 = A\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 13
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 17
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "a",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 22,
|
||||
"end": 23
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 22,
|
||||
"end": 23
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 25
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 25
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 27,
|
||||
"end": 31
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "a",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 36,
|
||||
"end": 37
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 36,
|
||||
"end": 37
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 34,
|
||||
"end": 39
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 34,
|
||||
"end": 39
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 27,
|
||||
"end": 39
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key4",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 41,
|
||||
"end": 45
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "a",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 52,
|
||||
"end": 53
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 52,
|
||||
"end": 53
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 50,
|
||||
"end": 55
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 48,
|
||||
"end": 56
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 48,
|
||||
"end": 56
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 41,
|
||||
"end": 56
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 57
|
||||
}
|
||||
}
|
||||
23
fluent-syntax/src/test/resources/structure_fixtures/junk.ftl
Normal file
23
fluent-syntax/src/test/resources/structure_fixtures/junk.ftl
Normal file
@@ -0,0 +1,23 @@
|
||||
err01 = {1xx}
|
||||
err02 = {1xx}
|
||||
|
||||
err03 = {1xx}
|
||||
1xx
|
||||
|
||||
err04 = {1xx}
|
||||
|
||||
1xx
|
||||
|
||||
err05 = {
|
||||
|
||||
1xx
|
||||
|
||||
err06 = {1xx
|
||||
|
||||
.attr = Value
|
||||
|
||||
err07 = {
|
||||
|
||||
key08 = Value
|
||||
|
||||
err09 = {
|
||||
238
fluent-syntax/src/test/resources/structure_fixtures/junk.json
Normal file
238
fluent-syntax/src/test/resources/structure_fixtures/junk.json
Normal file
@@ -0,0 +1,238 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 10
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = {1xx}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 14
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 24,
|
||||
"end": 24
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err02 = {1xx}\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 14,
|
||||
"end": 29
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 39,
|
||||
"end": 39
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err03 = {1xx}\n1xx\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 29,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 58,
|
||||
"end": 58
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err04 = {1xx}\n\n1xx\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 48,
|
||||
"end": 68
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 80,
|
||||
"end": 80
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err05 = {\n\n1xx\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 68,
|
||||
"end": 84
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 94,
|
||||
"end": 94
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err06 = {1xx\n\n .attr = Value\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 84,
|
||||
"end": 117
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 128,
|
||||
"end": 128
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err07 = {\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 117,
|
||||
"end": 128
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key08",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 128,
|
||||
"end": 133
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 136,
|
||||
"end": 141
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 136,
|
||||
"end": 141
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 128,
|
||||
"end": 141
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0028",
|
||||
"arguments": [],
|
||||
"message": "Expected an inline expression",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 153,
|
||||
"end": 153
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err09 = {\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 143,
|
||||
"end": 153
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 153
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
key01 = .Value
|
||||
key02 = …Value
|
||||
key03 = {"."}Value
|
||||
key04 =
|
||||
{"."}Value
|
||||
|
||||
key05 = Value
|
||||
{"."}Continued
|
||||
|
||||
key06 = .Value
|
||||
{"."}Continued
|
||||
|
||||
# ERROR (attr .Continued must have a value)
|
||||
key07 = Value
|
||||
.Continued
|
||||
|
||||
# ERROR (attr .Value must have a value)
|
||||
key08 =
|
||||
.Value
|
||||
|
||||
# ERROR (attr .Value must have a value)
|
||||
key09 =
|
||||
.Value
|
||||
Continued
|
||||
|
||||
key10 =
|
||||
.Value = which looks like an attribute
|
||||
Continued
|
||||
|
||||
key11 =
|
||||
{"."}Value = which looks like an attribute
|
||||
Continued
|
||||
|
||||
key12 =
|
||||
.accesskey =
|
||||
A
|
||||
|
||||
key13 =
|
||||
.attribute = .Value
|
||||
|
||||
key14 =
|
||||
.attribute =
|
||||
{"."}Value
|
||||
|
||||
key15 =
|
||||
{ 1 ->
|
||||
[one] .Value
|
||||
*[other]
|
||||
{"."}Value
|
||||
}
|
||||
|
||||
# ERROR (variant must have a value)
|
||||
key16 =
|
||||
{ 1 ->
|
||||
*[one]
|
||||
.Value
|
||||
}
|
||||
|
||||
# ERROR (unclosed placeable)
|
||||
key17 =
|
||||
{ 1 ->
|
||||
*[one] Value
|
||||
.Continued
|
||||
}
|
||||
@@ -0,0 +1,934 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 5
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": ".Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 14
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 14
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 14
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key02",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 20
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "…Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 23,
|
||||
"end": 29
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 23,
|
||||
"end": 29
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 29
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key03",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 30,
|
||||
"end": 35
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 39,
|
||||
"end": 42
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 38,
|
||||
"end": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 43,
|
||||
"end": 48
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 38,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 30,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key04",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 49,
|
||||
"end": 54
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 62,
|
||||
"end": 65
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 61,
|
||||
"end": 66
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 66,
|
||||
"end": 71
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 57,
|
||||
"end": 71
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 49,
|
||||
"end": 71
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key05",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 73,
|
||||
"end": 78
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 81,
|
||||
"end": 91
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 92,
|
||||
"end": 95
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 91,
|
||||
"end": 96
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Continued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 96,
|
||||
"end": 105
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 81,
|
||||
"end": 105
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 73,
|
||||
"end": 105
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key06",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 107,
|
||||
"end": 112
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": ".Value\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 115,
|
||||
"end": 126
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 127,
|
||||
"end": 130
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 126,
|
||||
"end": 131
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Continued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 131,
|
||||
"end": 140
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 115,
|
||||
"end": 140
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 107,
|
||||
"end": 140
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR (attr .Continued must have a value)",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 142,
|
||||
"end": 185
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 214,
|
||||
"end": 214
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key07 = Value\n .Continued\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 186,
|
||||
"end": 216
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR (attr .Value must have a value)",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 216,
|
||||
"end": 255
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 274,
|
||||
"end": 274
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key08 =\n .Value\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 256,
|
||||
"end": 276
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR (attr .Value must have a value)",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 276,
|
||||
"end": 315
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 334,
|
||||
"end": 334
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key09 =\n .Value\n Continued\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 316,
|
||||
"end": 350
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key10",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 350,
|
||||
"end": 355
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 363,
|
||||
"end": 368
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "which looks like an attribute\nContinued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 371,
|
||||
"end": 414
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 371,
|
||||
"end": 414
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 362,
|
||||
"end": 414
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 350,
|
||||
"end": 414
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key11",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 416,
|
||||
"end": 421
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 429,
|
||||
"end": 432
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 428,
|
||||
"end": 433
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value = which looks like an attribute\nContinued",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 433,
|
||||
"end": 484
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 424,
|
||||
"end": 484
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 416,
|
||||
"end": 484
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key12",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 486,
|
||||
"end": 491
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "accesskey",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 499,
|
||||
"end": 508
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "A",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 515,
|
||||
"end": 516
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 511,
|
||||
"end": 516
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 498,
|
||||
"end": 516
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 486,
|
||||
"end": 516
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key13",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 522,
|
||||
"end": 527
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attribute",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 535,
|
||||
"end": 544
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": ".Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 547,
|
||||
"end": 553
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 547,
|
||||
"end": 553
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 534,
|
||||
"end": 553
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 522,
|
||||
"end": 553
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key14",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 555,
|
||||
"end": 560
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attribute",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 568,
|
||||
"end": 577
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 590,
|
||||
"end": 593
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 589,
|
||||
"end": 594
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 594,
|
||||
"end": 599
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 580,
|
||||
"end": 599
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 567,
|
||||
"end": 599
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 555,
|
||||
"end": 599
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key15",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 601,
|
||||
"end": 606
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"value": "1",
|
||||
"type": "NumberLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 615,
|
||||
"end": 616
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "one",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 629,
|
||||
"end": 632
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": ".Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 634,
|
||||
"end": 640
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 634,
|
||||
"end": 640
|
||||
}
|
||||
},
|
||||
"default": false,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 628,
|
||||
"end": 640
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "other",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 650,
|
||||
"end": 655
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"value": ".",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 670,
|
||||
"end": 673
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 669,
|
||||
"end": 674
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 674,
|
||||
"end": 679
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 657,
|
||||
"end": 679
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 648,
|
||||
"end": 679
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 615,
|
||||
"end": 684
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 613,
|
||||
"end": 685
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 609,
|
||||
"end": 685
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 601,
|
||||
"end": 685
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR (variant must have a value)",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 687,
|
||||
"end": 722
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0012",
|
||||
"arguments": [],
|
||||
"message": "Expected value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 755,
|
||||
"end": 755
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key16 =\n { 1 ->\n *[one]\n .Value\n }\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 723,
|
||||
"end": 781
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR (unclosed placeable)",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 781,
|
||||
"end": 809
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 860,
|
||||
"end": 860
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key17 =\n { 1 ->\n *[one] Value\n .Continued\n }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 810,
|
||||
"end": 877
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 877
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
key01 = Value
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 2,
|
||||
"end": 7
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 15
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 2,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 16
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
|
||||
|
||||
|
||||
key01 = Value
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 15
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 23
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 24
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
err1 =
|
||||
{ foo ->
|
||||
*[1] One
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0016",
|
||||
"arguments": [],
|
||||
"message": "Message references cannot be used as selectors",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 17,
|
||||
"end": 17
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err1 =\n { foo ->\n *[1] One\n }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 42
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 42
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
### BE CAREFUL WHEN EDITING THIS FILE
|
||||
###
|
||||
### The last character in this file is the space (" ") on line 14.
|
||||
### We want to test a message with no value and with no EOL at the
|
||||
### end of the fie. Most editors automatically add a trailing newline
|
||||
### at EOF. If you edit this file make sure to turn this behavior off.
|
||||
|
||||
key1 =
|
||||
|
||||
|
||||
|
||||
key2 =
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "BE CAREFUL WHEN EDITING THIS FILE\n\nThe last character in this file is the space (\" \") on line 14.\nWe want to test a message with no value and with no EOL at the\nend of the fie. Most editors automatically add a trailing newline\nat EOF. If you edit this file make sure to turn this behavior off.",
|
||||
"type": "ResourceComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 316
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0005",
|
||||
"arguments": [
|
||||
"key1"
|
||||
],
|
||||
"message": "Expected message \"key1\" to have a value or attributes",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 324,
|
||||
"end": 324
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key1 =\n\n \n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 318,
|
||||
"end": 329
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0005",
|
||||
"arguments": [
|
||||
"key2"
|
||||
],
|
||||
"message": "Expected message \"key2\" to have a value or attributes",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 335,
|
||||
"end": 335
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key2 =\n\n ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 329,
|
||||
"end": 338
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 338
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
### BE CAREFUL WHEN EDITING THIS FILE
|
||||
###
|
||||
### The last character in this file is the equals sign in `key5 =` in line 18.
|
||||
### We want to test a message with no value and with no EOL after its
|
||||
### identifier. Most editors automatically add a trailing newline at EOF.
|
||||
### If you edit this file make sure to turn this behavior off.
|
||||
|
||||
key1 =
|
||||
|
||||
key2 =
|
||||
|
||||
key3 =
|
||||
.attr = Attr
|
||||
|
||||
key4 =
|
||||
.attr = Attr
|
||||
|
||||
key5 =
|
||||
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "BE CAREFUL WHEN EDITING THIS FILE\n\nThe last character in this file is the equals sign in `key5 =` in line 18.\nWe want to test a message with no value and with no EOL after its\nidentifier. Most editors automatically add a trailing newline at EOF.\nIf you edit this file make sure to turn this behavior off.",
|
||||
"type": "ResourceComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 327
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0005",
|
||||
"arguments": [
|
||||
"key1"
|
||||
],
|
||||
"message": "Expected message \"key1\" to have a value or attributes",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 335,
|
||||
"end": 335
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key1 =\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 329,
|
||||
"end": 337
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0005",
|
||||
"arguments": [
|
||||
"key2"
|
||||
],
|
||||
"message": "Expected message \"key2\" to have a value or attributes",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 343,
|
||||
"end": 343
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key2 = \n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 337,
|
||||
"end": 346
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 346,
|
||||
"end": 350
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 358,
|
||||
"end": 362
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 365,
|
||||
"end": 369
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 365,
|
||||
"end": 369
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 357,
|
||||
"end": 369
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 346,
|
||||
"end": 369
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key4",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 371,
|
||||
"end": 375
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 384,
|
||||
"end": 388
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 391,
|
||||
"end": 395
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 391,
|
||||
"end": 395
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 383,
|
||||
"end": 395
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 371,
|
||||
"end": 395
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0005",
|
||||
"arguments": [
|
||||
"key5"
|
||||
],
|
||||
"message": "Expected message \"key5\" to have a value or attributes",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 403,
|
||||
"end": 403
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "key5 =",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 397,
|
||||
"end": 403
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 403
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
# This is
|
||||
#
|
||||
# An example of a multiline comment
|
||||
|
||||
key = Value
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "This is\n\nAn example of a multiline comment",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 50,
|
||||
"end": 53
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 56,
|
||||
"end": 61
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 56,
|
||||
"end": 61
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 50,
|
||||
"end": 61
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 62
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
key01 = Value
|
||||
Continued here.
|
||||
|
||||
key02 =
|
||||
Value
|
||||
Continued here.
|
||||
|
||||
# ERROR "Continued" looks like a new message.
|
||||
# key03 parses fine with just "Value".
|
||||
key03 =
|
||||
Value
|
||||
Continued here
|
||||
and here.
|
||||
|
||||
# ERROR "Continued" and "and" look like new messages
|
||||
# key04 parses fine with just "Value".
|
||||
key04 =
|
||||
Value
|
||||
Continued here
|
||||
and even here.
|
||||
@@ -0,0 +1,250 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 5
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value\nContinued here.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 33
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 33
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 33
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key02",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 35,
|
||||
"end": 40
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value\nContinued here.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 47,
|
||||
"end": 72
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 43,
|
||||
"end": 72
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 35,
|
||||
"end": 72
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key03",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 159,
|
||||
"end": 164
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 171,
|
||||
"end": 176
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 167,
|
||||
"end": 176
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": {
|
||||
"content": "ERROR \"Continued\" looks like a new message.\nkey03 parses fine with just \"Value\".",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 74,
|
||||
"end": 158
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 74,
|
||||
"end": 176
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 187,
|
||||
"end": 187
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "Continued here\n and here.\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 177,
|
||||
"end": 207
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key04",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 299,
|
||||
"end": 304
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 311,
|
||||
"end": 316
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 307,
|
||||
"end": 316
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": {
|
||||
"content": "ERROR \"Continued\" and \"and\" look like new messages\nkey04 parses fine with just \"Value\".",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 207,
|
||||
"end": 298
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 207,
|
||||
"end": 316
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 327,
|
||||
"end": 327
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "Continued here\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 317,
|
||||
"end": 332
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 336,
|
||||
"end": 336
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "and even here.\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 332,
|
||||
"end": 347
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 347
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
err01 = { BUILTIN(key: "
|
||||
text
|
||||
") }
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0020",
|
||||
"arguments": [],
|
||||
"message": "Unterminated string expression",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 24,
|
||||
"end": 24
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { BUILTIN(key: \"\n text\n \") }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 40
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 40
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
key = Value
|
||||
Value 2
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value\nValue 2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 23
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 24
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
key =
|
||||
Foo { bar }
|
||||
Baz
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Foo ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 14
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "bar",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 16,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 16,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 14,
|
||||
"end": 21
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "\nBaz",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 21,
|
||||
"end": 29
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 29
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 29
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 30
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
err01 = Value
|
||||
.2 = Foo
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 19,
|
||||
"end": 19
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = Value\n .2 = Foo\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 27
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 27
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
key1 =
|
||||
A multiline message with a { placeable }
|
||||
at the end of line. The message should
|
||||
consist of three lines of text.
|
||||
|
||||
key2 =
|
||||
A multiline message with a { placeable }
|
||||
|
||||
key3 = A singleline message with a { placeable }
|
||||
@@ -0,0 +1,211 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key1",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 4
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "A multiline message with a ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 11,
|
||||
"end": 38
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "placeable",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 40,
|
||||
"end": 49
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 40,
|
||||
"end": 49
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 38,
|
||||
"end": 51
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "\nat the end of line. The message should\nconsist of three lines of text.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 51,
|
||||
"end": 131
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 7,
|
||||
"end": 131
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 131
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 133,
|
||||
"end": 137
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "A multiline message with a ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 144,
|
||||
"end": 171
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "placeable",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 173,
|
||||
"end": 182
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 173,
|
||||
"end": 182
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 171,
|
||||
"end": 184
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 140,
|
||||
"end": 184
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 133,
|
||||
"end": 184
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 186,
|
||||
"end": 190
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "A singleline message with a ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 193,
|
||||
"end": 221
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "placeable",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 223,
|
||||
"end": 232
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 223,
|
||||
"end": 232
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 221,
|
||||
"end": 234
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 193,
|
||||
"end": 234
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 186,
|
||||
"end": 234
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 235
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
key1 =
|
||||
{ foo }
|
||||
|
||||
key2 =
|
||||
Foo { foo }
|
||||
|
||||
key3 =
|
||||
{ foo } Foo
|
||||
@@ -0,0 +1,193 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key1",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 4
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 16
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 16
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 11,
|
||||
"end": 18
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 7,
|
||||
"end": 18
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 18
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 24
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Foo ",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 31,
|
||||
"end": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 37,
|
||||
"end": 40
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 37,
|
||||
"end": 40
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 35,
|
||||
"end": 42
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 27,
|
||||
"end": 42
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 20,
|
||||
"end": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 44,
|
||||
"end": 48
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 57,
|
||||
"end": 60
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 57,
|
||||
"end": 60
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 55,
|
||||
"end": 62
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": " Foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 62,
|
||||
"end": 66
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 51,
|
||||
"end": 66
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 44,
|
||||
"end": 66
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 67
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
key1 = {{ foo }}
|
||||
|
||||
key2 = { { foo } }
|
||||
|
||||
key3 =
|
||||
{
|
||||
{ foo }
|
||||
}
|
||||
|
||||
err1 = { { foo }
|
||||
|
||||
err2 = { foo } }
|
||||
@@ -0,0 +1,245 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key1",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 4
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 13
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 10,
|
||||
"end": 13
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 15
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 7,
|
||||
"end": 16
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 7,
|
||||
"end": 16
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 16
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 22
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 30,
|
||||
"end": 33
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 30,
|
||||
"end": 33
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 28,
|
||||
"end": 35
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 25,
|
||||
"end": 38
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 25,
|
||||
"end": 38
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 38
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 40,
|
||||
"end": 44
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "MessageReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 59,
|
||||
"end": 62
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 59,
|
||||
"end": 62
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 57,
|
||||
"end": 64
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 50,
|
||||
"end": 69
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 47,
|
||||
"end": 69
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 40,
|
||||
"end": 69
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 90,
|
||||
"end": 90
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err1 = { { foo }\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 71,
|
||||
"end": 90
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0027",
|
||||
"arguments": [],
|
||||
"message": "Unbalanced closing brace in TextElement.",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 105,
|
||||
"end": 105
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err2 = { foo } }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 90,
|
||||
"end": 107
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 107
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
err01 = { $num
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { $num\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
### This is a resource wide comment
|
||||
### It's multiline
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "This is a resource wide comment\nIt's multiline",
|
||||
"type": "ResourceComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 54
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 55
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
### This is a comment
|
||||
### This comment is multiline
|
||||
###
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "This is a comment\nThis comment is multiline\n",
|
||||
"type": "ResourceComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 55
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 56
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
key = Value
|
||||
.label = Value
|
||||
.accesskey = K
|
||||
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 11
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 11
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "label",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 17,
|
||||
"end": 22
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 25,
|
||||
"end": 30
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 25,
|
||||
"end": 30
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 16,
|
||||
"end": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "accesskey",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 32,
|
||||
"end": 41
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "K",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 44,
|
||||
"end": 45
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 44,
|
||||
"end": 45
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 31,
|
||||
"end": 45
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 45
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 46
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
err01 = { $foo $faa }
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { $foo $faa }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
err01 = { $foo - }
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 15
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { $foo - }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 19
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 19
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
err01 = { $foo -> }
|
||||
|
||||
err02 = { $foo ->
|
||||
}
|
||||
|
||||
err03 = { $foo ->
|
||||
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
""
|
||||
],
|
||||
"message": "Expected token: \"\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 18,
|
||||
"end": 18
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { $foo -> }\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 21
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0011",
|
||||
"arguments": [],
|
||||
"message": "Expected at least one variant after \"->\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 43,
|
||||
"end": 43
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err02 = { $foo ->\n }\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 21,
|
||||
"end": 46
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0011",
|
||||
"arguments": [],
|
||||
"message": "Expected at least one variant after \"->\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 64,
|
||||
"end": 64
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err03 = { $foo ->\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 46,
|
||||
"end": 64
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 64
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
# ERROR No blanks are allowed between * and [.
|
||||
err01 = { $sel ->
|
||||
* [key] Value
|
||||
}
|
||||
|
||||
# ERROR Missing default variant.
|
||||
err02 = { $sel ->
|
||||
[key] Value
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "ERROR No blanks are allowed between * and [.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 46
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0011",
|
||||
"arguments": [],
|
||||
"message": "Expected at least one variant after \"->\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 69,
|
||||
"end": 69
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err01 = { $sel ->\n * [key] Value\n}\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 47,
|
||||
"end": 87
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Missing default variant.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 87,
|
||||
"end": 119
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0010",
|
||||
"arguments": [],
|
||||
"message": "Expected one of the variants to be marked as default (*)",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 154,
|
||||
"end": 154
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err02 = { $sel ->\n [key] Value\n}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 120,
|
||||
"end": 156
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 156
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
foo = Foo
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 9
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 10
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
k = Value
|
||||
.l = Foo
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "k",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 1
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 4,
|
||||
"end": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 4,
|
||||
"end": 9
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "l",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 16
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 19,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 19,
|
||||
"end": 22
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 14,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 22
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 23
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
key =
|
||||
|
||||
|
||||
Value
|
||||
|
||||
key2 =
|
||||
|
||||
|
||||
.attr = Attribute
|
||||
|
||||
|
||||
key3 =
|
||||
Value
|
||||
Value2
|
||||
|
||||
|
||||
Value 4
|
||||
Value3
|
||||
|
||||
|
||||
|
||||
.attr2 = Attr 2
|
||||
|
||||
|
||||
key5 = Value 5
|
||||
|
||||
key6 = { $sel ->
|
||||
|
||||
[one] One
|
||||
|
||||
*[two] Two
|
||||
|
||||
}
|
||||
|
||||
key8 =
|
||||
|
||||
{
|
||||
|
||||
$sel
|
||||
|
||||
->
|
||||
|
||||
*[one] One
|
||||
|
||||
}
|
||||
@@ -0,0 +1,457 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 12,
|
||||
"end": 17
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 17
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 17
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 19,
|
||||
"end": 23
|
||||
}
|
||||
},
|
||||
"value": null,
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 33,
|
||||
"end": 37
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Attribute",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 40,
|
||||
"end": 49
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 40,
|
||||
"end": 49
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 32,
|
||||
"end": 49
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 19,
|
||||
"end": 49
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 52,
|
||||
"end": 56
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value\nValue2\n\n\nValue 4\nValue3",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 63,
|
||||
"end": 104
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 59,
|
||||
"end": 104
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 113,
|
||||
"end": 118
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Attr 2",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 121,
|
||||
"end": 127
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 121,
|
||||
"end": 127
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 112,
|
||||
"end": 127
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 52,
|
||||
"end": 127
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key5",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 130,
|
||||
"end": 134
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value 5",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 137,
|
||||
"end": 144
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 137,
|
||||
"end": 144
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 130,
|
||||
"end": 144
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key6",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 146,
|
||||
"end": 150
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"type": "VariableReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "sel",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 156,
|
||||
"end": 159
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 155,
|
||||
"end": 159
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "one",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 174,
|
||||
"end": 177
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "One",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 179,
|
||||
"end": 182
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 179,
|
||||
"end": 182
|
||||
}
|
||||
},
|
||||
"default": false,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 173,
|
||||
"end": 182
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "two",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 194,
|
||||
"end": 197
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Two",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 199,
|
||||
"end": 202
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 199,
|
||||
"end": 202
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 192,
|
||||
"end": 202
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 155,
|
||||
"end": 208
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 153,
|
||||
"end": 209
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 153,
|
||||
"end": 209
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 146,
|
||||
"end": 209
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key8",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 211,
|
||||
"end": 215
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"type": "VariableReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "sel",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 231,
|
||||
"end": 234
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 230,
|
||||
"end": 234
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "one",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 257,
|
||||
"end": 260
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "One",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 262,
|
||||
"end": 265
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 262,
|
||||
"end": 265
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 255,
|
||||
"end": 265
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 230,
|
||||
"end": 271
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 221,
|
||||
"end": 272
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 219,
|
||||
"end": 272
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 211,
|
||||
"end": 272
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 273
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
foo = Value
|
||||
|
||||
# This is a standalone comment
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "foo",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 3
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 11
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 11
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 11
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "This is a standalone comment",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 13,
|
||||
"end": 43
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 44
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
foo
|
||||
# ~ERROR E0003, pos 3, args "="
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 3,
|
||||
"end": 3
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "foo\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "~ERROR E0003, pos 3, args \"=\"",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 4,
|
||||
"end": 35
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 36
|
||||
}
|
||||
}
|
||||
24
fluent-syntax/src/test/resources/structure_fixtures/term.ftl
Normal file
24
fluent-syntax/src/test/resources/structure_fixtures/term.ftl
Normal file
@@ -0,0 +1,24 @@
|
||||
-term =
|
||||
{ $case ->
|
||||
*[uppercase] Term
|
||||
[lowercase] term
|
||||
}
|
||||
.attr = a
|
||||
|
||||
key01 = {-term}
|
||||
key02 = {-term()}
|
||||
key03 = {-term(case: "uppercase")}
|
||||
|
||||
|
||||
key04 =
|
||||
{ -term.attr ->
|
||||
[a] { -term } A
|
||||
[b] { -term() } B
|
||||
*[x] X
|
||||
}
|
||||
|
||||
-err1 =
|
||||
-err2 =
|
||||
.attr = Attribute
|
||||
--err3 = Error
|
||||
err4 = { --err4 }
|
||||
742
fluent-syntax/src/test/resources/structure_fixtures/term.json
Normal file
742
fluent-syntax/src/test/resources/structure_fixtures/term.json
Normal file
@@ -0,0 +1,742 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Term",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1,
|
||||
"end": 5
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"type": "VariableReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "case",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 15,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 14,
|
||||
"end": 19
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "uppercase",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 32,
|
||||
"end": 41
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 43,
|
||||
"end": 47
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 43,
|
||||
"end": 47
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 30,
|
||||
"end": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "lowercase",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 57,
|
||||
"end": 66
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 68,
|
||||
"end": 72
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 68,
|
||||
"end": 72
|
||||
}
|
||||
},
|
||||
"default": false,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 56,
|
||||
"end": 72
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 14,
|
||||
"end": 77
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 12,
|
||||
"end": 78
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 8,
|
||||
"end": 78
|
||||
}
|
||||
},
|
||||
"attributes": [
|
||||
{
|
||||
"type": "Attribute",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 84,
|
||||
"end": 88
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "a",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 91,
|
||||
"end": 92
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 91,
|
||||
"end": 92
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 83,
|
||||
"end": 92
|
||||
}
|
||||
}
|
||||
],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 92
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key01",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 94,
|
||||
"end": 99
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 104,
|
||||
"end": 108
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"arguments": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 103,
|
||||
"end": 108
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 102,
|
||||
"end": 109
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 102,
|
||||
"end": 109
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 94,
|
||||
"end": 109
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key02",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 110,
|
||||
"end": 115
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 120,
|
||||
"end": 124
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 124,
|
||||
"end": 126
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 119,
|
||||
"end": 126
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 118,
|
||||
"end": 127
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 118,
|
||||
"end": 127
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 110,
|
||||
"end": 127
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key03",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 128,
|
||||
"end": 133
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 138,
|
||||
"end": 142
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [
|
||||
{
|
||||
"type": "NamedArgument",
|
||||
"name": {
|
||||
"type": "Identifier",
|
||||
"name": "case",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 143,
|
||||
"end": 147
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"value": "uppercase",
|
||||
"type": "StringLiteral",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 149,
|
||||
"end": 160
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 143,
|
||||
"end": 160
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 142,
|
||||
"end": 161
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 137,
|
||||
"end": 161
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 136,
|
||||
"end": 162
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 136,
|
||||
"end": 162
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 128,
|
||||
"end": 162
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "key04",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 165,
|
||||
"end": 170
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 180,
|
||||
"end": 184
|
||||
}
|
||||
},
|
||||
"attribute": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 185,
|
||||
"end": 189
|
||||
}
|
||||
},
|
||||
"arguments": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 179,
|
||||
"end": 189
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "a",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 202,
|
||||
"end": 203
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 208,
|
||||
"end": 212
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"arguments": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 207,
|
||||
"end": 212
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 205,
|
||||
"end": 214
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": " A",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 214,
|
||||
"end": 216
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 205,
|
||||
"end": 216
|
||||
}
|
||||
},
|
||||
"default": false,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 201,
|
||||
"end": 216
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "b",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 226,
|
||||
"end": 227
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 232,
|
||||
"end": 236
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 236,
|
||||
"end": 238
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 231,
|
||||
"end": 238
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 229,
|
||||
"end": 240
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": " B",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 240,
|
||||
"end": 242
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 229,
|
||||
"end": 242
|
||||
}
|
||||
},
|
||||
"default": false,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 225,
|
||||
"end": 242
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "x",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 252,
|
||||
"end": 253
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "X",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 255,
|
||||
"end": 256
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 255,
|
||||
"end": 256
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 250,
|
||||
"end": 256
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 179,
|
||||
"end": 261
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 177,
|
||||
"end": 262
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 173,
|
||||
"end": 262
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 165,
|
||||
"end": 262
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0006",
|
||||
"arguments": [
|
||||
"err1"
|
||||
],
|
||||
"message": "Expected term \"-err1\" to have a value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 271,
|
||||
"end": 271
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "-err1 =\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 264,
|
||||
"end": 272
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0006",
|
||||
"arguments": [
|
||||
"err2"
|
||||
],
|
||||
"message": "Expected term \"-err2\" to have a value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 279,
|
||||
"end": 279
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "-err2 =\n .attr = Attribute\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 272,
|
||||
"end": 302
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 303,
|
||||
"end": 303
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "--err3 = Error\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 302,
|
||||
"end": 317
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0004",
|
||||
"arguments": [
|
||||
"a-zA-Z"
|
||||
],
|
||||
"message": "Expected a character from range: \"a-zA-Z\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 327,
|
||||
"end": 327
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "err4 = { --err4 }\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 317,
|
||||
"end": 335
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 335
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
-foo =
|
||||
.attr = Attribute
|
||||
|
||||
-bar =
|
||||
|
||||
-baz
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0006",
|
||||
"arguments": [
|
||||
"foo"
|
||||
],
|
||||
"message": "Expected term \"-foo\" to have a value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 6,
|
||||
"end": 6
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "-foo =\n .attr = Attribute\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0006",
|
||||
"arguments": [
|
||||
"bar"
|
||||
],
|
||||
"message": "Expected term \"-bar\" to have a value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 36,
|
||||
"end": 36
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "-bar =\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 30,
|
||||
"end": 38
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"="
|
||||
],
|
||||
"message": "Expected token: \"=\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 42,
|
||||
"end": 42
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "-baz\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 38,
|
||||
"end": 43
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 43
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
err01 = {
|
||||
key02 = Value 02
|
||||
|
||||
err03 = {
|
||||
FUNC(
|
||||
arg
|
||||
,
|
||||
namedArg: "Value"
|
||||
,
|
||||
key04 = Value 04
|
||||
)
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user