Fix set types
This commit is contained in:
parent
64c0fa9e9f
commit
6dd0013ce1
@ -99,14 +99,14 @@ Set
|
|||||||
===
|
===
|
||||||
|
|
||||||
set of int: basic_set;
|
set of int: basic_set;
|
||||||
set of var opt int: qualified_type_set;
|
var opt set of float: qualified_type_set;
|
||||||
set of X: named_type_set;
|
set of X: named_type_set;
|
||||||
set of 1..10: expr_type_set;
|
set of 1..10: expr_type_set;
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
(source_file
|
(source_file
|
||||||
(declaration (set_type (type_base (primitive_type))) (identifier))
|
(declaration (type_base (primitive_type)) (identifier))
|
||||||
(declaration (set_type (type_base (primitive_type))) (identifier))
|
(declaration (type_base (primitive_type)) (identifier))
|
||||||
(declaration (set_type (type_base (identifier))) (identifier))
|
(declaration (type_base (identifier)) (identifier))
|
||||||
(declaration (set_type (type_base (infix_operator (integer_literal) (integer_literal)))) (identifier)))
|
(declaration (type_base (infix_operator (integer_literal) (integer_literal))) (identifier)))
|
||||||
|
@ -260,17 +260,17 @@ module.exports = grammar({
|
|||||||
'"'
|
'"'
|
||||||
),
|
),
|
||||||
|
|
||||||
_type: ($) => choice($.array_type, $.type_base, $.set_type),
|
_type: ($) => choice($.array_type, $.type_base),
|
||||||
array_type: ($) =>
|
array_type: ($) =>
|
||||||
seq("array", "[", sepBy1(",", $.type_base), "]", "of", $.type_base),
|
seq("array", "[", sepBy1(",", $.type_base), "]", "of", $._type),
|
||||||
type_base: ($) =>
|
type_base: ($) =>
|
||||||
seq(
|
seq(
|
||||||
optional(field("var_par", choice("var", "par"))),
|
optional(field("var_par", choice("var", "par"))),
|
||||||
optional(field("opt", "opt")),
|
optional(field("opt", "opt")),
|
||||||
|
optional(field("set", seq("set", "of"))),
|
||||||
choice($.primitive_type, $._expression)
|
choice($.primitive_type, $._expression)
|
||||||
),
|
),
|
||||||
primitive_type: ($) => choice(...primitive_types),
|
primitive_type: ($) => choice(...primitive_types),
|
||||||
set_type: ($) => seq("set", "of", $.type_base),
|
|
||||||
|
|
||||||
_literal: ($) =>
|
_literal: ($) =>
|
||||||
choice(
|
choice(
|
||||||
|
48
src/grammar.json
vendored
48
src/grammar.json
vendored
@ -1842,10 +1842,6 @@
|
|||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "type_base"
|
"name": "type_base"
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "SYMBOL",
|
|
||||||
"name": "set_type"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -1907,7 +1903,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "type_base"
|
"name": "_type"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -1955,6 +1951,31 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "CHOICE",
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"type": "FIELD",
|
||||||
|
"name": "set",
|
||||||
|
"content": {
|
||||||
|
"type": "SEQ",
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "set"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "of"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "BLANK"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
@ -1995,23 +2016,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"set_type": {
|
|
||||||
"type": "SEQ",
|
|
||||||
"members": [
|
|
||||||
{
|
|
||||||
"type": "STRING",
|
|
||||||
"value": "set"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "STRING",
|
|
||||||
"value": "of"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "SYMBOL",
|
|
||||||
"name": "type_base"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"_literal": {
|
"_literal": {
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
|
35
src/node-types.json
vendored
35
src/node-types.json
vendored
@ -131,10 +131,6 @@
|
|||||||
"type": "array_type",
|
"type": "array_type",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "set_type",
|
|
||||||
"named": true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "type_base",
|
"type": "type_base",
|
||||||
"named": true
|
"named": true
|
||||||
@ -240,7 +236,7 @@
|
|||||||
"required": true,
|
"required": true,
|
||||||
"types": [
|
"types": [
|
||||||
{
|
{
|
||||||
"type": "type_base",
|
"type": "_type",
|
||||||
"named": true
|
"named": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -973,21 +969,6 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "set_type",
|
|
||||||
"named": true,
|
|
||||||
"fields": {},
|
|
||||||
"children": {
|
|
||||||
"multiple": false,
|
|
||||||
"required": true,
|
|
||||||
"types": [
|
|
||||||
{
|
|
||||||
"type": "type_base",
|
|
||||||
"named": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "source_file",
|
"type": "source_file",
|
||||||
"named": true,
|
"named": true,
|
||||||
@ -1056,6 +1037,20 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"set": {
|
||||||
|
"multiple": true,
|
||||||
|
"required": false,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "of",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "set",
|
||||||
|
"named": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"var_par": {
|
"var_par": {
|
||||||
"multiple": false,
|
"multiple": false,
|
||||||
"required": false,
|
"required": false,
|
||||||
|
13274
src/parser.c
vendored
13274
src/parser.c
vendored
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user