Fix set types
This commit is contained in:
parent
64c0fa9e9f
commit
6dd0013ce1
@ -99,14 +99,14 @@ 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 1..10: expr_type_set;
|
||||
|
||||
---
|
||||
|
||||
(source_file
|
||||
(declaration (set_type (type_base (primitive_type))) (identifier))
|
||||
(declaration (set_type (type_base (primitive_type))) (identifier))
|
||||
(declaration (set_type (type_base (identifier))) (identifier))
|
||||
(declaration (set_type (type_base (infix_operator (integer_literal) (integer_literal)))) (identifier)))
|
||||
(declaration (type_base (primitive_type)) (identifier))
|
||||
(declaration (type_base (primitive_type)) (identifier))
|
||||
(declaration (type_base (identifier)) (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: ($) =>
|
||||
seq("array", "[", sepBy1(",", $.type_base), "]", "of", $.type_base),
|
||||
seq("array", "[", sepBy1(",", $.type_base), "]", "of", $._type),
|
||||
type_base: ($) =>
|
||||
seq(
|
||||
optional(field("var_par", choice("var", "par"))),
|
||||
optional(field("opt", "opt")),
|
||||
optional(field("set", seq("set", "of"))),
|
||||
choice($.primitive_type, $._expression)
|
||||
),
|
||||
primitive_type: ($) => choice(...primitive_types),
|
||||
set_type: ($) => seq("set", "of", $.type_base),
|
||||
|
||||
_literal: ($) =>
|
||||
choice(
|
||||
|
48
src/grammar.json
vendored
48
src/grammar.json
vendored
@ -1842,10 +1842,6 @@
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type_base"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "set_type"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1907,7 +1903,7 @@
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"members": [
|
||||
@ -1995,23 +2016,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"set_type": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "set"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "of"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type_base"
|
||||
}
|
||||
]
|
||||
},
|
||||
"_literal": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
|
35
src/node-types.json
vendored
35
src/node-types.json
vendored
@ -131,10 +131,6 @@
|
||||
"type": "array_type",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "set_type",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "type_base",
|
||||
"named": true
|
||||
@ -240,7 +236,7 @@
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "type_base",
|
||||
"type": "_type",
|
||||
"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",
|
||||
"named": true,
|
||||
@ -1056,6 +1037,20 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"set": {
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "of",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "set",
|
||||
"named": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"var_par": {
|
||||
"multiple": 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