{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "bsv",
"word": "lcIdentifier",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "package_def"
},
{
"type": "SYMBOL",
"name": "imports"
},
{
"type": "SYMBOL",
"name": "bvi_import"
},
{
"type": "SYMBOL",
"name": "bdpi_import"
},
{
"type": "SYMBOL",
"name": "typedefs"
},
{
"type": "SYMBOL",
"name": "interface"
},
{
"type": "SYMBOL",
"name": "moduleinst"
},
{
"type": "SYMBOL",
"name": "moduleDef"
},
{
"type": "SYMBOL",
"name": "functiondef"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "typeclass"
},
{
"type": "SYMBOL",
"name": "instance"
},
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "SYMBOL",
"name": "macro_call_stmt"
}
]
}
},
"package_def": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "package"
},
{
"type": "FIELD",
"name": "package_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "package_item"
}
},
{
"type": "STRING",
"value": "endpackage"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"package_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "imports"
},
{
"type": "SYMBOL",
"name": "bvi_import"
},
{
"type": "SYMBOL",
"name": "bdpi_import"
},
{
"type": "SYMBOL",
"name": "export_decl"
},
{
"type": "SYMBOL",
"name": "typedefs"
},
{
"type": "SYMBOL",
"name": "interface"
},
{
"type": "SYMBOL",
"name": "moduleDef"
},
{
"type": "SYMBOL",
"name": "functiondef"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "moduleinst"
},
{
"type": "SYMBOL",
"name": "typeclass"
},
{
"type": "SYMBOL",
"name": "instance"
},
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "SYMBOL",
"name": "macro_call_stmt"
}
]
},
"export_decl": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "export"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "export"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"preproc_ifdef": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "`(?:ifdef|ifndef)\\s+[a-zA-Z_][a-zA-Z0-9_]*"
}
},
"preproc_else": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "`(?:elsif\\s+[a-zA-Z_][a-zA-Z0-9_]*|else)"
}
},
"preproc_endif": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "`endif"
}
},
"preproc_define": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "`define\\s+[a-zA-Z_][a-zA-Z0-9_]*[^\\n]*(\\\\\\n[^\\n]*)*"
}
},
"preproc_include": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "`include\\s+\"[^\"]*\""
}
},
"preproc_other": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "`[a-zA-Z_][a-zA-Z0-9_]*"
}
},
"comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": ".*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
},
"imports": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "FIELD",
"name": "filename",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "::"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": ";"
}
]
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
}
]
},
"ucIdentifier": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[A-Z][a-zA-Z0-9_]*"
}
},
"lcIdentifier": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[a-z_][a-zA-Z0-9_]*"
}
},
"_decimal": {
"type": "PATTERN",
"value": "[0-9][0-9_]*"
},
"_hexbits": {
"type": "PATTERN",
"value": "[0-9a-fA-F_]+"
},
"operator": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "&&&"
},
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "&&"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "STRING",
"value": "||"
},
{
"type": "STRING",
"value": "^"
},
{
"type": "STRING",
"value": "^~"
},
{
"type": "STRING",
"value": "~^"
},
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<<"
},
{
"type": "STRING",
"value": ">>"
}
]
}
},
"integer": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9][0-9_]*"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'h"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F_]+"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'b"
},
{
"type": "PATTERN",
"value": "[0-1_]+"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'o"
},
{
"type": "PATTERN",
"value": "[0-7_]+"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'d"
},
{
"type": "PATTERN",
"value": "[0-9_]+"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]+"
}
]
}
]
}
},
"float_literal": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[0-9]+\\.[0-9]+([eE][+-]?[0-9]+)?"
}
},
"string": {
"type": "SYMBOL",
"name": "stringDQ"
},
"stringDQ": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\\\\\n]+"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "[\\s\\S]"
}
]
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
}
},
"lowtype": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "bit"
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "integer"
},
{
"type": "STRING",
"value": "real"
},
{
"type": "STRING",
"value": "string"
},
{
"type": "STRING",
"value": "void"
}
]
},
"type": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typeParam"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "lowtype"
}
]
},
"type_any": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typeParam"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "lowtype"
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
}
]
},
"escaped_identifier": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "[^ \\t\\n\\r]+"
}
]
}
},
"variable": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member"
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "SYMBOL",
"name": "escaped_identifier"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
}
]
}
},
{
"type": "SYMBOL",
"name": "member"
},
{
"type": "SYMBOL",
"name": "escaped_identifier"
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
}
]
},
"typeParam": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "SYMBOL",
"name": "preproc_other"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "SYMBOL",
"name": "preproc_other"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"declr": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"deriving": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "deriving"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"attributes": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "(*"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "*)"
}
]
},
"value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "integer"
}
]
},
"formal_param": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "numeric"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "parameter"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"formal_params": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "formal_param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "formal_param"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"provisos": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "provisos"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "SYMBOL",
"name": "preproc_other"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "SYMBOL",
"name": "preproc_other"
}
]
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"port_modifier": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "clocked_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "reset_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "enable"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ready"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"typedefs": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typedefStruct"
},
{
"type": "SYMBOL",
"name": "typedefEnum"
},
{
"type": "SYMBOL",
"name": "typedefUnionTagged"
},
{
"type": "SYMBOL",
"name": "typedefAlias"
}
]
},
"typedefAlias": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typedef"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "SYMBOL",
"name": "integer"
}
]
},
{
"type": "FIELD",
"name": "alias_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"typedefUnionTagged": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typedef"
},
{
"type": "STRING",
"value": "union"
},
{
"type": "STRING",
"value": "tagged"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "union_member"
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "FIELD",
"name": "union_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "deriving"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"union_member": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "void"
},
{
"type": "FIELD",
"name": "tag_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "tag_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declr"
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "FIELD",
"name": "tag_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"typedefStruct": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typedef"
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declr"
}
},
{
"type": "STRING",
"value": "}"
},
{
"type": "FIELD",
"name": "struct_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "deriving"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"typedefEnum": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typedef"
},
{
"type": "STRING",
"value": "enum"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "enumItem"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "enumItem"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "FIELD",
"name": "enum_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "deriving"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"enumItem": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "value"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"bvi_import": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "stringDQ"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "moduleDef"
}
]
},
"bdpi_import": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "stringDQ"
},
{
"type": "STRING",
"value": "function"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"bvi_stmt": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "parameter"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default_clock"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default_reset"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "no_reset"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "input_clock"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "clocked_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "output_clock"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "input_reset"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "clocked_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "output_reset"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "same_family"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "port"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "path"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "schedule"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "CF"
},
{
"type": "STRING",
"value": "SBR"
},
{
"type": "STRING",
"value": "SB"
},
{
"type": "STRING",
"value": "C"
},
{
"type": "STRING",
"value": "ME"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ancestor"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ifc_inout"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "clocked_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "reset_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "clocked_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "reset_by"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "enable"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ready"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"typeclass": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typeclass"
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typeclass_deps"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "functionproto"
},
{
"type": "SYMBOL",
"name": "functiondef"
},
{
"type": "SYMBOL",
"name": "moduleproto"
}
]
}
},
{
"type": "STRING",
"value": "endtypeclass"
}
]
},
"moduleproto": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"typeclass_deps": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "dependencies"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "STRING",
"value": "determines"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "STRING",
"value": "determines"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"functionproto": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"instance": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "instance"
},
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "functiondef"
},
{
"type": "SYMBOL",
"name": "moduleDef"
},
{
"type": "SYMBOL",
"name": "assignment"
}
]
}
},
{
"type": "STRING",
"value": "endinstance"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"interface": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "interface_name",
"content": {
"type": "SYMBOL",
"name": "ucIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methoddef"
},
{
"type": "SYMBOL",
"name": "actiondef"
},
{
"type": "SYMBOL",
"name": "actionvaluedef"
},
{
"type": "SYMBOL",
"name": "interfaceinst"
},
{
"type": "SYMBOL",
"name": "attributes"
}
]
}
},
{
"type": "STRING",
"value": "endinterface"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"methoddef": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "port_modifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"actiondef": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "STRING",
"value": "Action"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "port_modifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"methodparamlist": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
}
]
}
}
]
},
"actionvaluedef": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "STRING",
"value": "ActionValue#"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "port_modifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"interfaceinst": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "port_modifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"moduleinst": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": "]"
}
]
}
}
]
}
},
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "moduleinstRHS"
},
{
"type": "STRING",
"value": ";"
}
]
},
"moduleinstRHS": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "system_task_name"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typeParam"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "SYMBOL",
"name": "clock_reset_arg"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "SYMBOL",
"name": "clock_reset_arg"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"clock_reset_arg": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "clocked_by"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "reset_by"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
}
]
},
"direct_inst": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "moduleinstRHS"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": ";"
}
]
},
"module_ifc": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
}
]
}
}
]
}
]
},
"moduleDef": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "formal_params"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "module_ifc"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "moduleStmt"
}
},
{
"type": "STRING",
"value": "endmodule"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"rules_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rules"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ruledef"
},
{
"type": "SYMBOL",
"name": "attributes"
}
]
}
},
{
"type": "STRING",
"value": "endrules"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"moduleStmt": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "moduleinst"
},
{
"type": "SYMBOL",
"name": "direct_inst"
},
{
"type": "SYMBOL",
"name": "functiondef"
},
{
"type": "SYMBOL",
"name": "ruledef"
},
{
"type": "SYMBOL",
"name": "rules_block"
},
{
"type": "SYMBOL",
"name": "methodimpl"
},
{
"type": "SYMBOL",
"name": "interfaceimpl"
},
{
"type": "SYMBOL",
"name": "bvi_stmt"
},
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "SYMBOL",
"name": "stmt"
}
]
},
"ruledef": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rule"
},
{
"type": "FIELD",
"name": "rule_name",
"content": {
"type": "SYMBOL",
"name": "lcIdentifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "matches"
},
{
"type": "SYMBOL",
"name": "match_pattern"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
{
"type": "STRING",
"value": "endrule"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"impl_paramlist": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributes"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
}
]
}
}
]
},
"method_guard": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "matches"
},
{
"type": "SYMBOL",
"name": "match_pattern"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"methodimpl": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "impl_paramlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "method_guard"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "method"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "impl_paramlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "port_modifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "method_guard"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
{
"type": "STRING",
"value": "endmethod"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"interfaceimpl": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": ";"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodimpl"
},
{
"type": "SYMBOL",
"name": "interfaceimpl"
}
]
}
},
{
"type": "STRING",
"value": "endinterface"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "interface"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodimpl"
},
{
"type": "SYMBOL",
"name": "interfaceimpl"
}
]
}
},
{
"type": "STRING",
"value": "endinterface"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"interface_expr": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodimpl"
},
{
"type": "SYMBOL",
"name": "interfaceimpl"
}
]
}
},
{
"type": "STRING",
"value": "endinterface"
}
]
},
"stmt": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "nb_assignment"
},
{
"type": "SYMBOL",
"name": "if_stmt"
},
{
"type": "SYMBOL",
"name": "for_stmt"
},
{
"type": "SYMBOL",
"name": "while_stmt"
},
{
"type": "SYMBOL",
"name": "case"
},
{
"type": "SYMBOL",
"name": "begin_block"
},
{
"type": "SYMBOL",
"name": "action_block"
},
{
"type": "SYMBOL",
"name": "actionvalue_block"
},
{
"type": "SYMBOL",
"name": "seq_block"
},
{
"type": "SYMBOL",
"name": "par_block"
},
{
"type": "SYMBOL",
"name": "returnStatement"
},
{
"type": "SYMBOL",
"name": "system_call_stmt"
},
{
"type": "SYMBOL",
"name": "functioncall_stmt"
},
{
"type": "SYMBOL",
"name": "proc_call"
},
{
"type": "SYMBOL",
"name": "let_bind"
},
{
"type": "SYMBOL",
"name": "let_destructure"
},
{
"type": "SYMBOL",
"name": "bind"
},
{
"type": "SYMBOL",
"name": "let_construct"
},
{
"type": "SYMBOL",
"name": "var_decl"
},
{
"type": "SYMBOL",
"name": "typed_nb_assign"
},
{
"type": "SYMBOL",
"name": "moduleinst"
},
{
"type": "SYMBOL",
"name": "macro_call_stmt"
}
]
},
"macro_call_stmt": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "macro_call"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"let_bind": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"let_destructure": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "<-"
}
]
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"var_decl": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": "]"
}
]
}
}
]
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"typed_nb_assign": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": "]"
}
]
}
}
]
}
},
{
"type": "STRING",
"value": "<="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"bind": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lcIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": "<-"
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"let_construct": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": ";"
}
]
},
"nb_assignment": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "<="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"functioncall_stmt": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "functioncall"
},
{
"type": "STRING",
"value": ";"
}
]
},
"proc_call": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member"
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"macro_call": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "preproc_other"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"system_task_name": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "$"
},
{
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
}
]
}
},
"system_call": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "system_task_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"system_call_stmt": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "system_task_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"if_stmt": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "matches"
},
{
"type": "SYMBOL",
"name": "match_pattern"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "stmt"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "stmt"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"match_pattern": {
"type": "PREC",
"value": 10,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "tagged"
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&&&"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "tagged"
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "bind",
"content": {
"type": "SYMBOL",
"name": "lcIdentifier"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "bind",
"content": {
"type": "SYMBOL",
"name": "lcIdentifier"
}
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "lcIdentifier"
}
]
}
]
}
},
"for_stmt": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "<="
}
]
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "<="
}
]
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "stmt"
},
{
"type": "SYMBOL",
"name": "ruledef"
},
{
"type": "SYMBOL",
"name": "moduleinst"
}
]
}
]
},
"while_stmt": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "stmt"
}
]
},
"begin_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "stmt"
},
{
"type": "SYMBOL",
"name": "ruledef"
},
{
"type": "SYMBOL",
"name": "moduleinst"
},
{
"type": "SYMBOL",
"name": "attributes"
}
]
}
},
{
"type": "STRING",
"value": "end"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"action_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "action"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
{
"type": "STRING",
"value": "endaction"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"actionvalue_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "actionvalue"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
{
"type": "STRING",
"value": "endactionvalue"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"seq_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "seq"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
{
"type": "STRING",
"value": "endseq"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"par_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "par"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
{
"type": "STRING",
"value": "endpar"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"assignment": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "let"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"varrhs": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "typeParam"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "SYMBOL",
"name": "variable"
}
]
},
"functioncall": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "SYMBOL",
"name": "clock_reset_arg"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "SYMBOL",
"name": "clock_reset_arg"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"typecast": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "assignrhs"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "assignrhs"
}
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"functiondef": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "function"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
},
{
"type": "SYMBOL",
"name": "functionbody"
},
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "endfunction"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "function"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_any"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "variable_name",
"content": {
"type": "SYMBOL",
"name": "variable"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "methodparamlist"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "provisos"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"functionbody": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "stmt"
}
},
"returnStatement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ";"
}
]
},
"case": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "case_arm"
}
},
{
"type": "STRING",
"value": "endcase"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "BLANK"
}
]
}
]
},
"case_arm": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "stmt"
}
]
},
"concat": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"operation": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "SYMBOL",
"name": "operator"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
},
"unary_expr": {
"type": "PREC",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "^"
}
]
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
},
"ternary": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
}
},
"tagged_expr": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "tagged"
},
{
"type": "SYMBOL",
"name": "ucIdentifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "BLANK"
}
]
}
]
}
},
"member": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variable"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
"paren_subscript": {
"type": "PREC",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "assignrhs"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"_primary_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float_literal"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "assignrhs"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"assignrhs": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "PREC",
"value": 4,
"content": {
"type": "SYMBOL",
"name": "paren_subscript"
}
},
{
"type": "PREC",
"value": 3,
"content": {
"type": "SYMBOL",
"name": "typecast"
}
},
{
"type": "PREC",
"value": 3,
"content": {
"type": "SYMBOL",
"name": "functioncall"
}
},
{
"type": "PREC",
"value": 3,
"content": {
"type": "SYMBOL",
"name": "system_call"
}
},
{
"type": "PREC",
"value": 3,
"content": {
"type": "SYMBOL",
"name": "macro_call"
}
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "varrhs"
}
},
{
"type": "SYMBOL",
"name": "functiondef"
},
{
"type": "SYMBOL",
"name": "case"
},
{
"type": "SYMBOL",
"name": "concat"
},
{
"type": "PREC",
"value": 2,
"content": {
"type": "SYMBOL",
"name": "operation"
}
},
{
"type": "SYMBOL",
"name": "unary_expr"
},
{
"type": "SYMBOL",
"name": "ternary"
},
{
"type": "SYMBOL",
"name": "tagged_expr"
},
{
"type": "SYMBOL",
"name": "action_block"
},
{
"type": "SYMBOL",
"name": "actionvalue_block"
},
{
"type": "SYMBOL",
"name": "seq_block"
},
{
"type": "SYMBOL",
"name": "par_block"
},
{
"type": "SYMBOL",
"name": "rules_block"
},
{
"type": "SYMBOL",
"name": "interface_expr"
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "preproc_ifdef"
},
{
"type": "SYMBOL",
"name": "preproc_else"
},
{
"type": "SYMBOL",
"name": "preproc_endif"
},
{
"type": "SYMBOL",
"name": "preproc_define"
},
{
"type": "SYMBOL",
"name": "preproc_include"
}
],
"conflicts": [
[
"methodimpl",
"assignment"
],
[
"methodimpl"
],
[
"assignment"
],
[
"case",
"case_arm"
],
[
"typedefAlias",
"moduleinst"
],
[
"typedefAlias",
"assignment"
],
[
"instance"
],
[
"action_block"
],
[
"actionvalue_block"
],
[
"seq_block"
],
[
"par_block"
],
[
"interface_expr",
"interfaceimpl"
],
[
"case"
],
[
"begin_block"
],
[
"functiondef"
],
[
"ruledef"
],
[
"moduleDef"
],
[
"identifier",
"type"
],
[
"identifier",
"type_any"
],
[
"identifier",
"variable"
],
[
"direct_inst",
"functioncall_stmt"
],
[
"direct_inst",
"moduleinst"
],
[
"bvi_import",
"imports"
],
[
"macro_call"
],
[
"typedefAlias"
],
[
"var_decl",
"assignment"
],
[
"var_decl",
"moduleinst"
],
[
"var_decl"
],
[
"proc_call",
"var_decl"
],
[
"formal_param"
],
[
"paren_subscript",
"assignment"
],
[
"rules_block"
],
[
"lowtype",
"union_member"
],
[
"module_ifc"
],
[
"moduleproto"
],
[
"functiondef"
],
[
"functionproto"
],
[
"interfaceimpl",
"interface_expr"
],
[
"moduleinstRHS",
"system_call_stmt"
],
[
"moduleinst",
"var_decl"
],
[
"moduleinst",
"typed_nb_assign"
],
[
"typed_nb_assign",
"var_decl"
],
[
"typed_nb_assign",
"assignment"
],
[
"typed_nb_assign"
],
[
"methodparamlist"
],
[
"system_call",
"system_call_stmt"
],
[
"functiondef"
],
[
"bdpi_import",
"bvi_import"
],
[
"for_stmt"
],
[
"stmt",
"begin_block"
],
[
"variable",
"moduleinst"
],
[
"variable",
"moduleinst",
"var_decl",
"typed_nb_assign"
],
[
"moduleStmt",
"stmt"
],
[
"stmt",
"for_stmt"
],
[
"type",
"type_any"
],
[
"identifier",
"type",
"type_any"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}