feat: fluent.syntax
Портирование кода из fluent-kotlin https://github.com/projectfluent/fluent-kotlin
This commit is contained in:
@@ -0,0 +1,706 @@
|
||||
{
|
||||
"type": "Resource",
|
||||
"body": [
|
||||
{
|
||||
"content": "Callees in placeables.",
|
||||
"type": "GroupComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "function-callee-placeable",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 27,
|
||||
"end": 52
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "FunctionReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "FUNCTION",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 56,
|
||||
"end": 64
|
||||
}
|
||||
},
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 64,
|
||||
"end": 66
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 56,
|
||||
"end": 66
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 55,
|
||||
"end": 67
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 55,
|
||||
"end": 67
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 27,
|
||||
"end": 67
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term-callee-placeable",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 68,
|
||||
"end": 89
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 94,
|
||||
"end": 98
|
||||
}
|
||||
},
|
||||
"attribute": null,
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 98,
|
||||
"end": 100
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 93,
|
||||
"end": 100
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 92,
|
||||
"end": 101
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 92,
|
||||
"end": 101
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 68,
|
||||
"end": 101
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Messages cannot be parameterized.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 103,
|
||||
"end": 144
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": 180,
|
||||
"end": 180
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "message-callee-placeable = {message()}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 145,
|
||||
"end": 184
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Equivalent to a MessageReference callee.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 184,
|
||||
"end": 232
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": 272,
|
||||
"end": 272
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "mixed-case-callee-placeable = {Function()}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 233,
|
||||
"end": 276
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Message attributes cannot be parameterized.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 276,
|
||||
"end": 327
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 373,
|
||||
"end": 373
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "message-attr-callee-placeable = {message.attr()}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 328,
|
||||
"end": 377
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Term attributes may not be used in Placeables.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 377,
|
||||
"end": 431
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0019",
|
||||
"arguments": [],
|
||||
"message": "Attributes of terms cannot be used as placeables",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 474,
|
||||
"end": 474
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "term-attr-callee-placeable = {-term.attr()}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 432,
|
||||
"end": 476
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Variables cannot be parameterized.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 476,
|
||||
"end": 518
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 557,
|
||||
"end": 557
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "variable-callee-placeable = {$variable()}\n\n\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 519,
|
||||
"end": 563
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "Callees in selectors.",
|
||||
"type": "GroupComment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 563,
|
||||
"end": 587
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "function-callee-selector",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 589,
|
||||
"end": 613
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"type": "FunctionReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "FUNCTION",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 617,
|
||||
"end": 625
|
||||
}
|
||||
},
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 625,
|
||||
"end": 627
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 617,
|
||||
"end": 627
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 636,
|
||||
"end": 639
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 641,
|
||||
"end": 646
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 641,
|
||||
"end": 646
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 634,
|
||||
"end": 646
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 617,
|
||||
"end": 647
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 616,
|
||||
"end": 648
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 616,
|
||||
"end": 648
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 589,
|
||||
"end": 648
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Message",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term-attr-callee-selector",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 649,
|
||||
"end": 674
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "Placeable",
|
||||
"expression": {
|
||||
"type": "SelectExpression",
|
||||
"selector": {
|
||||
"type": "TermReference",
|
||||
"id": {
|
||||
"type": "Identifier",
|
||||
"name": "term",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 679,
|
||||
"end": 683
|
||||
}
|
||||
},
|
||||
"attribute": {
|
||||
"type": "Identifier",
|
||||
"name": "attr",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 684,
|
||||
"end": 688
|
||||
}
|
||||
},
|
||||
"arguments": {
|
||||
"type": "CallArguments",
|
||||
"positional": [],
|
||||
"named": [],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 688,
|
||||
"end": 690
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 678,
|
||||
"end": 690
|
||||
}
|
||||
},
|
||||
"variants": [
|
||||
{
|
||||
"type": "Variant",
|
||||
"key": {
|
||||
"type": "Identifier",
|
||||
"name": "key",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 699,
|
||||
"end": 702
|
||||
}
|
||||
},
|
||||
"value": {
|
||||
"type": "Pattern",
|
||||
"elements": [
|
||||
{
|
||||
"type": "TextElement",
|
||||
"value": "Value",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 704,
|
||||
"end": 709
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 704,
|
||||
"end": 709
|
||||
}
|
||||
},
|
||||
"default": true,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 697,
|
||||
"end": 709
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 678,
|
||||
"end": 710
|
||||
}
|
||||
},
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 677,
|
||||
"end": 711
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 677,
|
||||
"end": 711
|
||||
}
|
||||
},
|
||||
"attributes": [],
|
||||
"comment": null,
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 649,
|
||||
"end": 711
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Messages cannot be parameterized.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 713,
|
||||
"end": 754
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": 789,
|
||||
"end": 789
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "message-callee-selector = {message() ->\n *[key] Value\n}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 755,
|
||||
"end": 813
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Equivalent to a MessageReference callee.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 813,
|
||||
"end": 861
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": 900,
|
||||
"end": 900
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "mixed-case-callee-selector = {Function() ->\n *[key] Value\n}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 862,
|
||||
"end": 924
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Message attributes cannot be parameterized.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 924,
|
||||
"end": 975
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1020,
|
||||
"end": 1020
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "message-attr-callee-selector = {message.attr() ->\n *[key] Value\n}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 976,
|
||||
"end": 1044
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Term values may not be used as selectors.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1044,
|
||||
"end": 1093
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0017",
|
||||
"arguments": [],
|
||||
"message": "Terms cannot be used as selectors",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1126,
|
||||
"end": 1126
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "term-callee-selector = {-term() ->\n *[key] Value\n}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1094,
|
||||
"end": 1147
|
||||
}
|
||||
},
|
||||
{
|
||||
"content": "ERROR Variables cannot be parameterized.",
|
||||
"type": "Comment",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1147,
|
||||
"end": 1189
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Junk",
|
||||
"annotations": [
|
||||
{
|
||||
"type": "Annotation",
|
||||
"code": "E0003",
|
||||
"arguments": [
|
||||
"}"
|
||||
],
|
||||
"message": "Expected token: \"}\"",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1227,
|
||||
"end": 1227
|
||||
}
|
||||
}
|
||||
],
|
||||
"content": "variable-callee-selector = {$variable() ->\n *[key] Value\n}\n",
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 1190,
|
||||
"end": 1251
|
||||
}
|
||||
}
|
||||
],
|
||||
"span": {
|
||||
"type": "Span",
|
||||
"start": 0,
|
||||
"end": 1251
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user