{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "metasp",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
"line_comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "%[^*\\n\\r][^\\n\\r]*"
},
{
"type": "STRING",
"value": "%"
}
]
}
},
"doc_comment": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "%*!"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "FIELD",
"name": "predicate",
"content": {
"type": "SYMBOL",
"name": "doc_predicate"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "description",
"content": {
"type": "SYMBOL",
"name": "doc_desc"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "doc_args"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "*%"
}
}
]
},
"variables": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "doc_var"
},
"named": true,
"value": "variable"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ","
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "doc_var"
},
"named": true,
"value": "variable"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
}
]
}
}
]
},
"doc_predicate": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "ALIAS",
"content": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[_']*[a-z][A-Za-z0-9_']*"
}
},
"named": true,
"value": "identifier"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_doc_token_paren"
},
"named": false,
"value": "("
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variables",
"content": {
"type": "SYMBOL",
"name": "variables"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ")"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"doc_var": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[_']*[A-Z][A-Za-z0-9_']*"
}
},
"doc_fragment_emph": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\*[^`%*_\\r\\n][^`*_\\r\\n]*\\*"
}
},
"doc_fragment_bold": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\*\\*[^`%*_\\r\\n][^`*_\\r\\n]*\\*\\*"
}
},
"doc_fragment_italic": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "_[^`*_\\r\\n]+_"
}
},
"doc_fragment_code": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "`[^`*_\\r\\n]+`"
}
},
"doc_desc": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "doc_fragment_bold"
},
{
"type": "SYMBOL",
"name": "doc_fragment_emph"
},
{
"type": "SYMBOL",
"name": "doc_fragment_italic"
},
{
"type": "SYMBOL",
"name": "doc_fragment_code"
},
{
"type": "SYMBOL",
"name": "doc_fragment_string"
}
]
}
},
"doc_args": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_doc_token_args"
},
"named": false,
"value": "Args:"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "doc_arg"
}
}
]
},
"doc_arg": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_doc_token_minus"
},
"named": false,
"value": "-"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "doc_var"
},
"named": true,
"value": "variable"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[\\s\\r\\n]*"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "description",
"content": {
"type": "SYMBOL",
"name": "doc_desc"
}
},
{
"type": "BLANK"
}
]
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[_']*[a-z][A-Za-z0-9_']*"
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_fragment"
},
"named": true,
"value": "string_fragment"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_escape"
},
"named": true,
"value": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
"fstring": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "f\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fstring_fragment"
},
"named": true,
"value": "string_fragment"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_fstring_escape"
},
"named": true,
"value": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "fstring_field"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
"_string_fragment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\\\x00]+"
}
}
},
"_fstring_fragment": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^{}\"\\\\\\x00]+"
}
}
},
"_string_escape": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\\\[n\"\\\\]"
}
},
"_fstring_escape": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\\\[n\"\\\\]|\\{\\{|\\}\\}"
}
},
"fstring_accessor": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[.][a-z][A-Za-z0-9_]*"
},
"named": true,
"value": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\\["
},
{
"type": "ALIAS",
"content": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "(0|[1-9][0-9]*)"
}
},
"named": true,
"value": "number"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "\\]"
}
}
]
}
]
}
},
"fstring_conversion": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "!"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[rs]?"
}
}
]
},
"fstring_align": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[^\\n\\x00]?[<>=^]"
}
},
"fstring_sign": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[-+ ]"
}
},
"fstring_alternate": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "#"
}
},
"fstring_width": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "(0|[1-9][0-9]*)"
}
},
"fstring_grouping": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[,_]"
}
},
"fstring_type": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[bcdoxXns]"
}
},
"fstring_spec": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_align"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_sign"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_alternate"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_width"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_grouping"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_type"
},
{
"type": "BLANK"
}
]
}
]
},
"fstring_field": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_accessor"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_conversion"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "fstring_spec"
},
{
"type": "BLANK"
}
]
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "}"
}
}
]
},
"supremum": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#sup"
},
{
"type": "STRING",
"value": "#supremum"
}
]
}
},
"infimum": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#inf"
},
{
"type": "STRING",
"value": "#infimum"
}
]
}
},
"number": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0"
},
{
"type": "PATTERN",
"value": "([1-9][0-9]*)"
}
]
},
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "PATTERN",
"value": "([0-9A-Fa-f]+)"
}
]
}
},
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0o"
},
{
"type": "PATTERN",
"value": "([1-7]+)"
}
]
}
},
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "PATTERN",
"value": "([0-1]+)"
}
]
}
}
]
}
},
"anonymous": {
"type": "STRING",
"value": "_"
},
"variable": {
"type": "PATTERN",
"value": "[_']*[A-Z][A-Za-z0-9_']*"
},
"_const_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "infimum"
},
{
"type": "SYMBOL",
"name": "supremum"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "const_binary_operation"
},
"named": true,
"value": "binary_operation"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "const_unary_operation"
},
"named": true,
"value": "unary_operation"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "const_abs"
},
"named": true,
"value": "abs"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "const_function"
},
"named": true,
"value": "function"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "metasp_const_function"
},
"named": true,
"value": "metasp_function"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "const_tuple"
},
"named": true,
"value": "tuple"
}
]
},
"const_binary_operation": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "?"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "\\"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
}
]
},
"const_unary_operation": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "~"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
}
]
}
}
]
},
"const_abs": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "_const_term"
},
{
"type": "STRING",
"value": "|"
}
]
},
"const_terms": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_const_term"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_const_term"
}
]
}
}
]
},
"_const_arg_pool": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "const_terms"
},
"named": true,
"value": "terms"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"const_function": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_const_arg_pool"
},
{
"type": "BLANK"
}
]
}
]
},
"_const_term_comma": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_const_term"
},
{
"type": "STRING",
"value": ","
}
]
},
"_const_terms_trail": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_const_term"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_const_term"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"_const_tuple_item": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ","
},
"named": true,
"value": "lone_comma"
},
{
"type": "SYMBOL",
"name": "_const_term"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_const_term_comma"
},
"named": true,
"value": "terms"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_const_terms_trail"
},
"named": true,
"value": "terms"
}
]
},
"const_tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_const_tuple_item"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"binary_operation": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ".."
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "?"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "\\"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
}
]
},
"unary_operation": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "~"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
}
}
]
},
"abs": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "term"
}
]
}
},
{
"type": "STRING",
"value": "|"
}
]
},
"terms": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "term"
}
]
}
}
]
},
"projection": {
"type": "STRING",
"value": "*"
},
"_term_or_projection": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "SYMBOL",
"name": "projection"
}
]
},
"_terms_or_projection": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_term_or_projection"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_term_or_projection"
}
]
}
}
]
},
"_arg_pool_n": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms_or_projection"
},
"named": true,
"value": "terms"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "empty_pool_item_first"
},
"named": true,
"value": "empty_pool_item"
}
]
}
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms_or_projection"
},
"named": true,
"value": "terms"
},
{
"type": "SYMBOL",
"name": "empty_pool_item"
}
]
}
}
]
}
}
]
},
"_arg_pool": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms_or_projection"
},
"named": true,
"value": "terms"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "SYMBOL",
"name": "_arg_pool_n"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"function": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg_pool"
},
{
"type": "BLANK"
}
]
}
]
},
"external_function": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg_pool"
},
{
"type": "BLANK"
}
]
}
]
},
"_term_comma": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_term_or_projection"
},
{
"type": "STRING",
"value": ","
}
]
},
"_terms_trail": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_term_or_projection"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_term_or_projection"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"tuple_pool_item": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ","
},
"named": true,
"value": "lone_comma"
},
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_term_comma"
},
"named": true,
"value": "terms"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_terms_trail"
},
"named": true,
"value": "terms"
}
]
},
"_tuple_pool_n": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tuple_pool_item"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "empty_pool_item_first"
},
"named": true,
"value": "empty_pool_item"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tuple_pool_item"
},
{
"type": "SYMBOL",
"name": "empty_pool_item"
}
]
}
]
}
}
]
},
"tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tuple_pool_item"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_tuple_pool_n"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "infimum"
},
{
"type": "SYMBOL",
"name": "supremum"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "fstring"
},
{
"type": "SYMBOL",
"name": "anonymous"
},
{
"type": "SYMBOL",
"name": "variable"
},
{
"type": "SYMBOL",
"name": "binary_operation"
},
{
"type": "SYMBOL",
"name": "unary_operation"
},
{
"type": "SYMBOL",
"name": "abs"
},
{
"type": "SYMBOL",
"name": "function"
},
{
"type": "SYMBOL",
"name": "metasp_function"
},
{
"type": "SYMBOL",
"name": "external_function"
},
{
"type": "SYMBOL",
"name": "tuple"
}
]
},
"theory_operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[/!<=>+\\-*\\\\?&@|~\\^]"
},
{
"type": "PATTERN",
"value": "[/!<=>+\\-*\\\\?&@|;~\\^\\.][/!<=>+\\-*\\\\?&@|:;~\\^\\.]+"
},
{
"type": "PATTERN",
"value": ":[/!<=>+*\\\\?&@|:;~\\^\\.]"
},
{
"type": "PATTERN",
"value": ":[/!<=>+\\-*\\\\?&@|:;~\\^\\.]{2,}"
}
]
}
},
"_theory_operator": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "theory_operator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "default_negation"
},
"named": true,
"value": "theory_operator"
}
]
},
"theory_operators": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_theory_operator"
}
},
"theory_terms": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_term"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "theory_term"
}
]
}
}
]
},
"_theory_arguments": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "theory_terms"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"theory_function": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_theory_arguments"
},
{
"type": "BLANK"
}
]
}
]
},
"_theory_terms_trail": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_term"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "theory_term"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ","
},
"named": true,
"value": "lone_comma"
}
]
},
"theory_tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_theory_terms_trail"
},
"named": true,
"value": "theory_terms"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"theory_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "theory_terms"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"theory_set": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "theory_terms"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"theory_unparsed_term": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "theory_root_term"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_operators"
},
{
"type": "SYMBOL",
"name": "theory_root_term"
}
]
}
}
]
},
"theory_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "theory_unparsed_term"
},
{
"type": "SYMBOL",
"name": "theory_root_term"
}
]
},
"theory_root_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "theory_function"
},
{
"type": "SYMBOL",
"name": "theory_tuple"
},
{
"type": "SYMBOL",
"name": "theory_list"
},
{
"type": "SYMBOL",
"name": "theory_set"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "infimum"
},
{
"type": "SYMBOL",
"name": "supremum"
},
{
"type": "SYMBOL",
"name": "variable"
},
{
"type": "SYMBOL",
"name": "anonymous"
}
]
},
"boolean_constant": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#true"
},
{
"type": "STRING",
"value": "#false"
}
]
}
},
"atom_identifier": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "sign",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "-"
},
"named": true,
"value": "classical_negation"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"symbolic_atom": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "atom_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg_pool"
},
{
"type": "BLANK"
}
]
}
]
},
"relation": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "!="
}
]
}
},
"comparison": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "SYMBOL",
"name": "relation"
},
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "relation"
},
{
"type": "SYMBOL",
"name": "term"
}
]
}
}
]
},
"simple_atom": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "symbolic_atom"
},
{
"type": "SYMBOL",
"name": "comparison"
},
{
"type": "SYMBOL",
"name": "boolean_constant"
},
{
"type": "SYMBOL",
"name": "metasp_symbolic_atom"
}
]
},
"default_negation": {
"type": "STRING",
"value": "not"
},
"double_default_negation": {
"type": "STRING",
"value": "not not"
},
"literal_sign": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "default_negation"
},
{
"type": "SYMBOL",
"name": "double_default_negation"
}
]
},
"literal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "sign",
"content": {
"type": "SYMBOL",
"name": "literal_sign"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "atom",
"content": {
"type": "SYMBOL",
"name": "simple_atom"
}
}
]
},
"condition": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "literal"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "literal"
}
]
}
}
]
},
"_condition": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "condition"
}
},
{
"type": "BLANK"
}
]
}
]
},
"aggregate_function": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#sum"
},
{
"type": "STRING",
"value": "#sum+"
},
{
"type": "STRING",
"value": "#min"
},
{
"type": "STRING",
"value": "#max"
},
{
"type": "STRING",
"value": "#count"
}
]
}
},
"upper": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "relation"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "term"
}
]
},
"lower": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "relation"
},
{
"type": "BLANK"
}
]
}
]
},
"set_aggregate_element": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "literal",
"content": {
"type": "SYMBOL",
"name": "literal"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_condition"
},
{
"type": "BLANK"
}
]
}
]
},
"set_aggregate_elements": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "set_aggregate_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "set_aggregate_element"
}
]
}
}
]
},
"set_aggregate": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "lower"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "elements",
"content": {
"type": "SYMBOL",
"name": "set_aggregate_elements"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "upper"
}
},
{
"type": "BLANK"
}
]
}
]
},
"theory_element": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "theory_terms",
"content": {
"type": "SYMBOL",
"name": "theory_terms"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_condition"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_condition"
}
]
},
"theory_elements": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "theory_element"
}
]
}
}
]
},
"theory_atom_upper": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_theory_operator"
},
{
"type": "SYMBOL",
"name": "theory_term"
}
]
},
"theory_atom": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "_arg_pool"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "elements",
"content": {
"type": "SYMBOL",
"name": "theory_elements"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "theory_atom_upper"
}
},
{
"type": "BLANK"
}
]
}
]
},
"body_aggregate_element": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_condition"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "terms",
"content": {
"type": "SYMBOL",
"name": "terms"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_condition"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"body_aggregate_elements": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "body_aggregate_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "body_aggregate_element"
}
]
}
}
]
},
"body_aggregate": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "lower"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "aggregate_function"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "elements",
"content": {
"type": "SYMBOL",
"name": "body_aggregate_elements"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "upper"
}
},
{
"type": "BLANK"
}
]
}
]
},
"body_literal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "sign",
"content": {
"type": "SYMBOL",
"name": "literal_sign"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "atom",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "set_aggregate"
},
{
"type": "SYMBOL",
"name": "body_aggregate"
},
{
"type": "SYMBOL",
"name": "theory_atom"
},
{
"type": "SYMBOL",
"name": "simple_atom"
}
]
}
}
]
},
"_body_literal_sep": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "body_literal"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": ","
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "conditional_literal"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"body": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_body_literal_sep"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "body_literal"
},
{
"type": "SYMBOL",
"name": "conditional_literal"
}
]
}
]
},
"_colon_body": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "."
}
]
},
"head_aggregate_element": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "terms",
"content": {
"type": "SYMBOL",
"name": "terms"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "FIELD",
"name": "literal",
"content": {
"type": "SYMBOL",
"name": "literal"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_condition"
},
{
"type": "BLANK"
}
]
}
]
},
"head_aggregate_elements": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "head_aggregate_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "head_aggregate_element"
}
]
}
}
]
},
"head_aggregate": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "lower"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "aggregate_function"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "elements",
"content": {
"type": "SYMBOL",
"name": "head_aggregate_elements"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "upper"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_conditional_literal_n": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "literal",
"content": {
"type": "SYMBOL",
"name": "literal"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "condition"
}
}
]
},
"_conditional_literal_0": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "literal",
"content": {
"type": "SYMBOL",
"name": "literal"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
}
]
},
"conditional_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_conditional_literal_n"
},
{
"type": "SYMBOL",
"name": "_conditional_literal_0"
}
]
},
"_disjunction_element_sep": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "literal"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": "|"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_conditional_literal_n"
},
"named": true,
"value": "conditional_literal"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "STRING",
"value": "|"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_conditional_literal_0"
},
"named": true,
"value": "conditional_literal"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"disjunction": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_disjunction_element_sep"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "literal"
},
{
"type": "SYMBOL",
"name": "conditional_literal"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "conditional_literal"
}
]
},
"head": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "literal"
},
{
"type": "SYMBOL",
"name": "disjunction"
},
{
"type": "SYMBOL",
"name": "set_aggregate"
},
{
"type": "SYMBOL",
"name": "head_aggregate"
},
{
"type": "SYMBOL",
"name": "theory_atom"
}
]
},
"rule": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "head",
"content": {
"type": "SYMBOL",
"name": "head"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":-"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "."
}
]
},
"integrity_constraint": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":-"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "."
}
]
},
"_optimize_tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "terms"
}
]
},
"weight": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "term",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "FIELD",
"name": "priority",
"content": {
"type": "SYMBOL",
"name": "term"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"optimize_element": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "weight",
"content": {
"type": "SYMBOL",
"name": "weight"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "terms",
"content": {
"type": "SYMBOL",
"name": "_optimize_tuple"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_condition"
},
{
"type": "BLANK"
}
]
}
]
},
"optimize_elements": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "optimize_element"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "optimize_element"
}
]
}
}
]
},
"weak_constraint": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":~"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "weight",
"content": {
"type": "SYMBOL",
"name": "weight"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "terms",
"content": {
"type": "SYMBOL",
"name": "_optimize_tuple"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"maximize": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#maximize"
},
{
"type": "STRING",
"value": "#maximise"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "elements",
"content": {
"type": "SYMBOL",
"name": "optimize_elements"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "."
}
]
},
"minimize": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#minimize"
},
{
"type": "STRING",
"value": "#minimise"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "elements",
"content": {
"type": "SYMBOL",
"name": "optimize_elements"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "."
}
]
},
"signature": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "atom_identifier"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "FIELD",
"name": "arity",
"content": {
"type": "SYMBOL",
"name": "number"
}
}
]
},
"extended_signature": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "signature"
},
{
"type": "SYMBOL",
"name": "metasp_signature"
}
]
},
"extended_symbolic_atom": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "symbolic_atom"
},
{
"type": "SYMBOL",
"name": "metasp_symbolic_atom"
}
]
},
"show": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#show"
},
{
"type": "STRING",
"value": "."
}
]
},
"show_term": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#show"
},
{
"type": "FIELD",
"name": "term",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "SYMBOL",
"name": "_colon_body"
}
]
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"show_signature": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#show"
},
{
"type": "FIELD",
"name": "signature",
"content": {
"type": "SYMBOL",
"name": "extended_signature"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "boolean"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"defined": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#defined"
},
{
"type": "FIELD",
"name": "signature",
"content": {
"type": "SYMBOL",
"name": "extended_signature"
}
},
{
"type": "STRING",
"value": "."
}
]
},
"project_signature": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#project"
},
{
"type": "FIELD",
"name": "signature",
"content": {
"type": "SYMBOL",
"name": "extended_signature"
}
},
{
"type": "STRING",
"value": "."
}
]
},
"project_atom": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#project"
},
{
"type": "FIELD",
"name": "atom",
"content": {
"type": "SYMBOL",
"name": "extended_symbolic_atom"
}
},
{
"type": "SYMBOL",
"name": "_colon_body"
}
]
},
"parameters": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"program": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#program"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "."
}
]
},
"code": {
"type": "TOKEN",
"content": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^#]"
},
{
"type": "PATTERN",
"value": "#[^e][^#]"
},
{
"type": "PATTERN",
"value": "#e[^n][^#]"
},
{
"type": "PATTERN",
"value": "#en[^d][^#]"
}
]
}
}
},
"script": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#script"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "language",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "code",
"content": {
"type": "SYMBOL",
"name": "code"
}
},
{
"type": "STRING",
"value": "#end"
},
{
"type": "STRING",
"value": "."
}
]
},
"const_type": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "STRING",
"value": "override"
}
]
}
},
"const": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#const"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_const_term"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "const_type"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"edge_pair": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "term"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "term"
}
]
},
"edge": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#edge"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "edge_pair",
"content": {
"type": "SYMBOL",
"name": "edge_pair"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "edge_pair",
"content": {
"type": "SYMBOL",
"name": "edge_pair"
}
}
]
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "_colon_body"
}
]
},
"heuristic": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#heuristic"
},
{
"type": "FIELD",
"name": "atom",
"content": {
"type": "SYMBOL",
"name": "extended_symbolic_atom"
}
},
{
"type": "SYMBOL",
"name": "_colon_body"
},
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "weight",
"content": {
"type": "SYMBOL",
"name": "weight"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"include": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#include"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ">"
}
]
}
]
},
{
"type": "STRING",
"value": "."
}
]
},
"external": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#external"
},
{
"type": "FIELD",
"name": "atom",
"content": {
"type": "SYMBOL",
"name": "extended_symbolic_atom"
}
},
{
"type": "SYMBOL",
"name": "_colon_body"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "term"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"theory_operator_arity": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "unary"
}
},
"_theory_operator_arity_binary": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "binary"
}
},
"theory_operator_associativity": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "left"
},
{
"type": "STRING",
"value": "right"
}
]
}
},
"theory_operator_definition": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_theory_operator"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "FIELD",
"name": "priority",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "arity",
"content": {
"type": "SYMBOL",
"name": "theory_operator_arity"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_theory_operator"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "FIELD",
"name": "priority",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "arity",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_theory_operator_arity_binary"
},
"named": true,
"value": "theory_operator_arity"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "associativity",
"content": {
"type": "SYMBOL",
"name": "theory_operator_associativity"
}
}
]
}
]
},
"theory_operator_definitions": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_operator_definition"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "theory_operator_definition"
}
]
}
}
]
},
"theory_term_definition": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "operators",
"content": {
"type": "SYMBOL",
"name": "theory_operator_definitions"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"theory_atom_type": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "head"
},
{
"type": "STRING",
"value": "body"
},
{
"type": "STRING",
"value": "any"
},
{
"type": "STRING",
"value": "directive"
}
]
}
},
"_theory_operators_sep": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_theory_operator"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_theory_operator"
}
]
}
}
]
},
"theory_atom_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "/"
},
{
"type": "FIELD",
"name": "arity",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "colon"
},
"named": false,
"value": ":"
},
{
"type": "FIELD",
"name": "theory_term_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "operators",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_theory_operators_sep"
},
"named": true,
"value": "theory_operators"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "guard",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ","
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "atom_type",
"content": {
"type": "SYMBOL",
"name": "theory_atom_type"
}
}
]
},
"_theory_definitions": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_atom_definition"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "theory_atom_definition"
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "theory_term_definition"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "theory_term_definition"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "theory_atom_definition"
}
]
}
}
]
}
]
},
"theory": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#theory"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_theory_definitions"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "."
}
]
},
"_metasp_identifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"metasp_atom_identifier": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "sign",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "-"
},
"named": true,
"value": "classical_negation"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_metasp_identifier"
}
}
]
},
"metasp_symbolic_atom": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "metasp_atom_identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "_arg_pool"
}
},
{
"type": "BLANK"
}
]
}
]
},
"metasp_function": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_metasp_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg_pool"
},
{
"type": "BLANK"
}
]
}
]
},
"metasp_const_function": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_metasp_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_const_arg_pool"
},
{
"type": "BLANK"
}
]
}
]
},
"metasp_signature": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "metasp_atom_identifier"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "FIELD",
"name": "arity",
"content": {
"type": "SYMBOL",
"name": "number"
}
}
]
},
"metasp_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#type"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "metasp_type_keyword"
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "."
}
]
},
"metasp_type_keyword": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "expressions",
"content": {
"type": "SYMBOL",
"name": "metasp_expression_definitions"
}
},
{
"type": "FIELD",
"name": "subtypes",
"content": {
"type": "SYMBOL",
"name": "metasp_subtypes"
}
},
{
"type": "FIELD",
"name": "macros",
"content": {
"type": "SYMBOL",
"name": "metasp_macros"
}
},
{
"type": "FIELD",
"name": "occurrence",
"content": {
"type": "SYMBOL",
"name": "metasp_occurrence"
}
}
]
},
"metasp_expression_definitions": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "expressions"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "metasp_expression_definition"
},
{
"type": "STRING",
"value": ";"
}
]
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": ";"
}
]
},
"metasp_expression_definition": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "signature",
"content": {
"type": "SYMBOL",
"name": "metasp_signature"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "metasp_argument_definitions"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"metasp_argument_definitions": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "metasp_argument_definition"
}
},
"metasp_argument_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "metasp_keyword_arg"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "metasp_keyword_arg"
}
]
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"metasp_keyword_arg": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"metasp_subtypes": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "subtypes"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ";"
}
]
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": ";"
}
]
},
"metasp_macros": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "macros"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "metasp_macro_definition"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "metasp_macro_where"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": ";"
}
]
},
"metasp_macro_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "metasp_const_function"
},
"named": true,
"value": "metasp_function"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "metasp_const_function"
},
"named": true,
"value": "metasp_function"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"metasp_macro_where": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "where"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "metasp_keyword_arg"
},
{
"type": "STRING",
"value": ";"
}
]
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": ";"
}
]
},
"metasp_occurrence": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "occurrence"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "theory_atom_type"
},
{
"type": "STRING",
"value": ";"
}
]
},
"statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "doc_comment"
},
{
"type": "SYMBOL",
"name": "rule"
},
{
"type": "SYMBOL",
"name": "integrity_constraint"
},
{
"type": "SYMBOL",
"name": "weak_constraint"
},
{
"type": "SYMBOL",
"name": "minimize"
},
{
"type": "SYMBOL",
"name": "maximize"
},
{
"type": "SYMBOL",
"name": "show"
},
{
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "show_term"
}
},
{
"type": "PREC_DYNAMIC",
"value": 2,
"content": {
"type": "SYMBOL",
"name": "show_signature"
}
},
{
"type": "SYMBOL",
"name": "defined"
},
{
"type": "SYMBOL",
"name": "edge"
},
{
"type": "SYMBOL",
"name": "heuristic"
},
{
"type": "SYMBOL",
"name": "project_signature"
},
{
"type": "SYMBOL",
"name": "project_atom"
},
{
"type": "SYMBOL",
"name": "const"
},
{
"type": "SYMBOL",
"name": "script"
},
{
"type": "SYMBOL",
"name": "include"
},
{
"type": "SYMBOL",
"name": "program"
},
{
"type": "SYMBOL",
"name": "external"
},
{
"type": "SYMBOL",
"name": "theory"
},
{
"type": "SYMBOL",
"name": "metasp_type"
}
]
}
},
"extras": [
{
"type": "SYMBOL",
"name": "line_comment"
},
{
"type": "SYMBOL",
"name": "block_comment"
},
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [
[
"signature",
"function"
],
[
"metasp_signature",
"metasp_function"
],
[
"_metasp_identifier",
"theory_atom"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "empty_pool_item_first"
},
{
"type": "SYMBOL",
"name": "empty_pool_item"
},
{
"type": "SYMBOL",
"name": "colon"
},
{
"type": "SYMBOL",
"name": "block_comment"
},
{
"type": "SYMBOL",
"name": "doc_fragment_string"
},
{
"type": "SYMBOL",
"name": "_doc_token_args"
},
{
"type": "SYMBOL",
"name": "_doc_token_paren"
},
{
"type": "SYMBOL",
"name": "_doc_token_minus"
}
],
"inline": [
"atom_identifier",
"metasp_atom_identifier",
"_const_tuple_item",
"_theory_operator",
"_condition",
"_body_literal_sep",
"_colon_body",
"_disjunction_element_sep",
"_optimize_tuple",
"_theory_definitions"
],
"supertypes": [
"statement",
"term",
"tuple_pool_item",
"theory_root_term",
"simple_atom",
"head",
"literal_sign",
"theory_term",
"metasp_type_keyword",
"extended_signature",
"extended_symbolic_atom"
],
"reserved": {}
}