Add support for slices
This commit is contained in:
parent
30545542d7
commit
c25792f45c
55
grammar.js
55
grammar.js
|
|
@ -53,6 +53,9 @@ module.exports = grammar({
|
|||
// 'case' '(' identifier . '=>' ...
|
||||
[$._name, $.component_choice_list],
|
||||
|
||||
// 'case' '(' _name '(' _discrete_range ')' . '=>'
|
||||
[$.slice, $._discrete_range],
|
||||
|
||||
// 'case' '(' expression . ',' ...
|
||||
[$.record_component_association_list, $.positional_array_aggregate],
|
||||
|
||||
|
|
@ -99,8 +102,13 @@ module.exports = grammar({
|
|||
[$.function_call, $.procedure_call_statement],
|
||||
[$._name, $._aspect_mark],
|
||||
[$._name, $.package_body_stub],
|
||||
[$._name, $._subtype_indication],
|
||||
[$._name, $._subtype_indication, $.component_choice_list],
|
||||
[$.attribute_definition_clause, $._attribute_reference],
|
||||
],
|
||||
inline: $ => [
|
||||
$._name_not_function_call,
|
||||
],
|
||||
|
||||
rules: {
|
||||
compilation: $ => repeat(
|
||||
|
|
@ -124,18 +132,22 @@ module.exports = grammar({
|
|||
multiplying_operator: $ => choice('*', '/', 'mod', 'rem'),
|
||||
tick: $ => '\'', // But is not the start of a character_literal
|
||||
|
||||
_name: $ => choice( // RM 4.1
|
||||
_name_not_function_call: $ => choice( // RM 4.1
|
||||
$.identifier,
|
||||
$.selected_component, // rule is inlined above
|
||||
$.selected_component,
|
||||
$._attribute_reference,
|
||||
$.function_call,
|
||||
$.qualified_expression,
|
||||
$.target_name,
|
||||
$.slice,
|
||||
// $.explicit_dereference, // covered by $.selected_component
|
||||
$.character_literal,
|
||||
$.string_literal, // name of an operator. However, in a number of
|
||||
// places using a string doesn't make sense.
|
||||
),
|
||||
_name: $ => choice( // RM 4.1
|
||||
$._name_not_function_call,
|
||||
$.function_call,
|
||||
),
|
||||
selected_component: $ => prec.left(seq( // RM 4.1.3
|
||||
field('prefix', $._name),
|
||||
seq(
|
||||
|
|
@ -150,6 +162,15 @@ module.exports = grammar({
|
|||
target_name: $ => '@', // RM 5.2.1
|
||||
_name_list: $ => prec.left(comma_separated_list_of($._name)),
|
||||
_defining_identifier_list: $ => comma_separated_list_of($.identifier),
|
||||
slice: $ => seq( // RM 4.1.2
|
||||
field('prefix', $._name),
|
||||
'(',
|
||||
$.range_g, // ??? Should be a $._discrete_range, but then the
|
||||
// following Proc(Arr (1 .. 2)) is parsed as a slice of
|
||||
// Proc, using a subtype_indication "Arr (1..2)"
|
||||
// $._discrete_range,
|
||||
')',
|
||||
),
|
||||
|
||||
_attribute_reference: $ => choice(
|
||||
seq(
|
||||
|
|
@ -242,17 +263,13 @@ module.exports = grammar({
|
|||
field('iterator_name', $._name),
|
||||
optional($.iterator_filter),
|
||||
),
|
||||
attribute_designator: $ => choice(
|
||||
$.identifier, // missing function_call
|
||||
attribute_designator: $ => choice( // ARM 4.1.4
|
||||
$.identifier,
|
||||
reservedWord('access'),
|
||||
reservedWord('delta'),
|
||||
reservedWord('digits'),
|
||||
reservedWord('mod'),
|
||||
),
|
||||
function_call: $ => seq( // ARM 6.4
|
||||
field('name', $._name),
|
||||
$.actual_parameter_part, // should be optional, but covered by _name
|
||||
),
|
||||
qualified_expression: $ => seq( // ARM 4.7
|
||||
field('subtype_name', $._name),
|
||||
$.tick,
|
||||
|
|
@ -370,7 +387,7 @@ module.exports = grammar({
|
|||
),
|
||||
_subtype_indication: $ => seq( // ARM 3.2.2
|
||||
optional($.null_exclusion),
|
||||
field('subtype_mark', $._name),
|
||||
field('subtype_mark', $._name_not_function_call),
|
||||
optional($._constraint),
|
||||
),
|
||||
_constraint: $ => choice(
|
||||
|
|
@ -870,7 +887,7 @@ module.exports = grammar({
|
|||
$._subtype_indication,
|
||||
$.range_g,
|
||||
),
|
||||
_discrete_range: $ => choice( // same as _discrete_subtype_definition
|
||||
_discrete_range: $ => choice( // 3.6.1 == _discrete_subtype_definition
|
||||
$._subtype_indication,
|
||||
$.range_g,
|
||||
),
|
||||
|
|
@ -2197,11 +2214,21 @@ module.exports = grammar({
|
|||
$._subtype_indication,
|
||||
$.access_definition,
|
||||
),
|
||||
procedure_call_statement: $ => seq( // ARM 6.4
|
||||
field('name', $._name),
|
||||
optional($.actual_parameter_part),
|
||||
procedure_call_statement: $ => choice( // ARM 6.4
|
||||
seq(
|
||||
field('name', $._name_not_function_call),
|
||||
';',
|
||||
),
|
||||
seq(
|
||||
field('name', $._name), // includes function_call
|
||||
$.actual_parameter_part,
|
||||
';',
|
||||
),
|
||||
),
|
||||
function_call: $ => seq( // ARM 6.4
|
||||
field('name', $._name), // itself includes a function_call
|
||||
$.actual_parameter_part, // should be optional, but covered by _name
|
||||
),
|
||||
raise_statement: $ => seq(
|
||||
reservedWord('raise'),
|
||||
optional(seq(
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@
|
|||
(loop_parameter_specification "in" @keyword.repeat)
|
||||
(iterator_specification ["in" "of"] @keyword.repeat)
|
||||
(range_attribute_designator "range" @keyword.repeat)
|
||||
|
||||
(raise_statement "with" @exception)
|
||||
|
||||
(subprogram_declaration "is" @keyword.function "abstract" @keyword.function)
|
||||
|
|
@ -150,9 +151,9 @@
|
|||
(expression_function_declaration
|
||||
(function_specification)
|
||||
"is"
|
||||
(_) @function.expression
|
||||
(_) @attribute
|
||||
)
|
||||
(subprogram_declaration (aspect_specification) @function.expression)
|
||||
(subprogram_declaration (aspect_specification) @attribute)
|
||||
|
||||
;; Highlight full subprogram specifications
|
||||
;(subprogram_body
|
||||
|
|
|
|||
127
src/grammar.json
127
src/grammar.json
|
|
@ -143,7 +143,7 @@
|
|||
"type": "STRING",
|
||||
"value": "'"
|
||||
},
|
||||
"_name": {
|
||||
"_name_not_function_call": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
|
|
@ -158,10 +158,6 @@
|
|||
"type": "SYMBOL",
|
||||
"name": "_attribute_reference"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "function_call"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "qualified_expression"
|
||||
|
|
@ -170,6 +166,10 @@
|
|||
"type": "SYMBOL",
|
||||
"name": "target_name"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "slice"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "character_literal"
|
||||
|
|
@ -180,6 +180,19 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"_name": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "_name_not_function_call"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "function_call"
|
||||
}
|
||||
]
|
||||
},
|
||||
"selected_component": {
|
||||
"type": "PREC_LEFT",
|
||||
"value": 0,
|
||||
|
|
@ -285,6 +298,31 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"slice": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "prefix",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "_name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "("
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "range_g"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ")"
|
||||
}
|
||||
]
|
||||
},
|
||||
"_attribute_reference": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
|
|
@ -858,23 +896,6 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"function_call": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "name",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "_name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "actual_parameter_part"
|
||||
}
|
||||
]
|
||||
},
|
||||
"qualified_expression": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
|
|
@ -1732,7 +1753,7 @@
|
|||
"name": "subtype_mark",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "_name"
|
||||
"name": "_name_not_function_call"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -13944,6 +13965,26 @@
|
|||
]
|
||||
},
|
||||
"procedure_call_statement": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "FIELD",
|
||||
"name": "name",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "_name_not_function_call"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
|
|
@ -13954,21 +13995,32 @@
|
|||
"name": "_name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "actual_parameter_part"
|
||||
},
|
||||
{
|
||||
"type": "BLANK"
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"function_call": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
"type": "FIELD",
|
||||
"name": "name",
|
||||
"content": {
|
||||
"type": "SYMBOL",
|
||||
"name": "_name"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "actual_parameter_part"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -14612,6 +14664,14 @@
|
|||
"at_clause",
|
||||
"_name"
|
||||
],
|
||||
[
|
||||
"_name",
|
||||
"component_choice_list"
|
||||
],
|
||||
[
|
||||
"slice",
|
||||
"_discrete_range"
|
||||
],
|
||||
[
|
||||
"record_component_association_list",
|
||||
"positional_array_aggregate"
|
||||
|
|
@ -14677,6 +14737,15 @@
|
|||
"_name",
|
||||
"package_body_stub"
|
||||
],
|
||||
[
|
||||
"_name",
|
||||
"_subtype_indication"
|
||||
],
|
||||
[
|
||||
"_name",
|
||||
"_subtype_indication",
|
||||
"component_choice_list"
|
||||
],
|
||||
[
|
||||
"attribute_definition_clause",
|
||||
"_attribute_reference"
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -249,6 +253,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -323,6 +331,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -467,6 +479,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -568,6 +584,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -719,6 +739,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -918,6 +942,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -1245,6 +1273,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -1648,6 +1680,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -1741,6 +1777,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -2171,6 +2211,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -2246,6 +2290,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -2328,6 +2376,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -2433,6 +2485,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -2830,6 +2886,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -2928,6 +2988,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3041,6 +3105,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3126,6 +3194,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3327,6 +3399,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3407,6 +3483,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3569,6 +3649,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3701,6 +3785,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -3823,6 +3911,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4013,6 +4105,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4063,6 +4159,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4181,6 +4281,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4321,6 +4425,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4475,6 +4583,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4526,6 +4638,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4596,6 +4712,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4704,6 +4824,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4795,6 +4919,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -4992,6 +5120,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5058,6 +5190,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5172,6 +5308,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5222,6 +5362,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5311,6 +5455,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5361,6 +5509,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5411,6 +5563,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5461,6 +5617,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5577,6 +5737,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -5658,6 +5822,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -6112,6 +6280,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -6198,6 +6370,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -6254,6 +6430,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -6378,6 +6558,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -6428,6 +6612,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -6569,6 +6757,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7099,6 +7291,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7205,6 +7401,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7255,6 +7455,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7357,6 +7561,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7407,6 +7615,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7500,6 +7712,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7550,6 +7766,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7616,6 +7836,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7666,6 +7890,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -7855,6 +8083,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8015,6 +8247,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8094,6 +8330,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8180,6 +8420,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8246,6 +8490,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8445,6 +8693,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8500,6 +8752,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8637,6 +8893,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8711,6 +8971,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -8807,6 +9071,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9005,6 +9273,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9055,6 +9327,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9163,6 +9439,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9250,6 +9530,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9306,6 +9590,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9399,6 +9687,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9630,6 +9922,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9689,6 +9985,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9712,6 +10012,76 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true,
|
||||
"fields": {
|
||||
"prefix": {
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "attribute_designator",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "character_literal",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "function_call",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "qualified_expression",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "reduction_attribute_designator",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "target_name",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "tick",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "value_sequence",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "range_g",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "subpool_specification",
|
||||
"named": true,
|
||||
|
|
@ -9748,6 +10118,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9804,6 +10178,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -9959,6 +10337,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10015,6 +10397,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10093,6 +10479,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10183,6 +10573,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10357,6 +10751,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10416,6 +10814,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10712,6 +11114,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10871,6 +11277,10 @@
|
|||
"type": "selected_component",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "slice",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "string_literal",
|
||||
"named": true
|
||||
|
|
@ -10986,6 +11396,10 @@
|
|||
"type": ">>",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "Class",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "[",
|
||||
"named": false
|
||||
|
|
|
|||
72179
src/parser.c
72179
src/parser.c
File diff suppressed because it is too large
Load Diff
|
|
@ -247,3 +247,43 @@ end;
|
|||
(expression
|
||||
(term
|
||||
(identifier))))))))))))))))))
|
||||
|
||||
================================================================================
|
||||
Slices
|
||||
================================================================================
|
||||
|
||||
Proc (Arr (1 .. 2));
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(compilation
|
||||
(compilation_unit
|
||||
(procedure_call_statement
|
||||
(identifier)
|
||||
(actual_parameter_part
|
||||
(parameter_association
|
||||
(expression
|
||||
(term
|
||||
(slice
|
||||
(identifier)
|
||||
(range_g
|
||||
(term
|
||||
(numeric_literal))
|
||||
(term
|
||||
(numeric_literal)))))))))))
|
||||
|
||||
================================================================================
|
||||
Slices with subtype declaration
|
||||
================================================================================
|
||||
|
||||
A : Arr (Boolean);
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(compilation
|
||||
(compilation_unit
|
||||
(object_declaration
|
||||
(identifier)
|
||||
(identifier)
|
||||
(index_constraint
|
||||
(identifier)))))
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ end;
|
|||
(non_empty_declarative_part
|
||||
(object_declaration
|
||||
(identifier)
|
||||
(slice
|
||||
(identifier)
|
||||
(index_constraint
|
||||
(range_g
|
||||
(identifier)
|
||||
(tick)
|
||||
|
|
|
|||
|
|
@ -405,13 +405,9 @@ end;
|
|||
(case_statement_alternative
|
||||
(discrete_choice_list
|
||||
(discrete_choice
|
||||
(expression
|
||||
(term
|
||||
(character_literal))))
|
||||
(character_literal))
|
||||
(discrete_choice
|
||||
(expression
|
||||
(term
|
||||
(character_literal)))))
|
||||
(character_literal)))
|
||||
(null_statement)))))))
|
||||
|
||||
================================================================================
|
||||
|
|
|
|||
|
|
@ -521,3 +521,32 @@ Subprogram and field access
|
|||
(term
|
||||
(numeric_literal))))))
|
||||
(identifier)))))))
|
||||
|
||||
===============================
|
||||
Parameterless Procedure call
|
||||
===============================
|
||||
|
||||
Proc;
|
||||
|
||||
------
|
||||
|
||||
(compilation
|
||||
(compilation_unit
|
||||
(procedure_call_statement
|
||||
(identifier))))
|
||||
|
||||
===============================
|
||||
Parameterless Function call
|
||||
===============================
|
||||
|
||||
A := Func;
|
||||
|
||||
------
|
||||
|
||||
(compilation
|
||||
(compilation_unit
|
||||
(assignment_statement
|
||||
(identifier)
|
||||
(expression
|
||||
(term
|
||||
(identifier))))))
|
||||
|
|
|
|||
|
|
@ -169,13 +169,12 @@ end;
|
|||
(asynchronous_select
|
||||
(triggering_alternative
|
||||
(procedure_call_statement
|
||||
(function_call
|
||||
(identifier)
|
||||
(actual_parameter_part
|
||||
(parameter_association
|
||||
(expression
|
||||
(term
|
||||
(numeric_literal)))))))
|
||||
(numeric_literal))))))
|
||||
(null_statement))
|
||||
(procedure_call_statement
|
||||
(identifier))))))))
|
||||
|
|
|
|||
|
|
@ -146,18 +146,14 @@ end P;
|
|||
(array_component_association
|
||||
(discrete_choice_list
|
||||
(discrete_choice
|
||||
(expression
|
||||
(term
|
||||
(identifier)))))
|
||||
(identifier)))
|
||||
(expression
|
||||
(term
|
||||
(numeric_literal))))
|
||||
(array_component_association
|
||||
(discrete_choice_list
|
||||
(discrete_choice
|
||||
(expression
|
||||
(term
|
||||
(identifier)))))
|
||||
(identifier)))
|
||||
(expression
|
||||
(term
|
||||
(numeric_literal)))))))
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user