tree-sitter-ride
Version:
Ride grammar for tree-sitter
847 lines (845 loc) • 17.3 kB
JSON
{
"name": "ride",
"rules": {
"source_file": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_directive"
},
{
"type": "SYMBOL",
"name": "_directive"
},
{
"type": "SYMBOL",
"name": "_directive"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_definition"
}
}
]
},
"_definition": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "variable_declaration_statement"
}
]
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_annotation"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "func"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "SYMBOL",
"name": "_assignment_operator"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
]
},
"parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "parameter_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"parameter_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "BLANK"
}
]
}
]
},
"block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "basic_type"
},
{
"type": "SYMBOL",
"name": "special_type"
},
{
"type": "SYMBOL",
"name": "transaction_type"
},
{
"type": "SYMBOL",
"name": "predefined_data_structures"
}
]
},
"basic_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "String"
},
{
"type": "STRING",
"value": "Int"
},
{
"type": "STRING",
"value": "Boolean"
},
{
"type": "STRING",
"value": "ByteVector"
}
]
},
"special_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "unit"
}
]
},
"transaction_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "AliasTransaction"
},
{
"type": "STRING",
"value": "BurnTransaction"
},
{
"type": "STRING",
"value": "DataTransaction"
},
{
"type": "STRING",
"value": "ExchangeTransaction"
},
{
"type": "STRING",
"value": "GenesisTransaction"
},
{
"type": "STRING",
"value": "InvokeScriptTransaction"
},
{
"type": "STRING",
"value": "IssueTransaction"
},
{
"type": "STRING",
"value": "LeaseCancelTransaction"
},
{
"type": "STRING",
"value": "LeaseTransaction"
},
{
"type": "STRING",
"value": "MassTransferTransaction"
},
{
"type": "STRING",
"value": "ReissueTransaction"
},
{
"type": "STRING",
"value": "SetScriptTransaction"
},
{
"type": "STRING",
"value": "SetAssetScriptTransaction"
},
{
"type": "STRING",
"value": "SponsorshipTransaction"
},
{
"type": "STRING",
"value": "UpdateAssetInfoTransaction"
}
]
},
"predefined_data_structures": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Address"
},
{
"type": "STRING",
"value": "Alias"
},
{
"type": "STRING",
"value": "DataEntry"
},
{
"type": "STRING",
"value": "ScriptResult"
},
{
"type": "STRING",
"value": "Invocation"
},
{
"type": "STRING",
"value": "ScriptTransfer"
},
{
"type": "STRING",
"value": "TransferSet"
},
{
"type": "STRING",
"value": "WriteSet"
},
{
"type": "STRING",
"value": "AssetInfo"
},
{
"type": "STRING",
"value": "BlockInfo"
}
]
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration_statement"
},
{
"type": "SYMBOL",
"name": "_type_matching_statement"
},
{
"type": "SYMBOL",
"name": "_if_statement"
}
]
},
"variable_declaration_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_type_matching_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_if_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_conditional_operator"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "STRING",
"value": "then"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else if"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_conditional_operator"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "else"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "type_matching"
},
{
"type": "SYMBOL",
"name": "list_declaration"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
}
]
},
"_annotation": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@Callable"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@Verifier"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[a-z]+"
},
"number": {
"type": "PATTERN",
"value": "\\d+"
},
"unary_expression": {
"type": "PREC",
"value": 2,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
]
}
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_arithmetic_operator"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
"type_matching": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "match"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"list_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"_arithmetic_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
}
]
},
"_conditional_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
}
]
},
"_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{-#"
},
{
"type": "SYMBOL",
"name": "directive_type"
},
{
"type": "SYMBOL",
"name": "directive_value"
},
{
"type": "STRING",
"value": "#-}"
}
]
},
"_assignment_operator": {
"type": "STRING",
"value": "="
},
"directive_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "STDLIB_VERSION"
},
{
"type": "STRING",
"value": "CONTENT_TYPE"
},
{
"type": "STRING",
"value": "SCRIPT_TYPE"
}
]
},
"directive_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "STRING",
"value": "EXPRESSION"
},
{
"type": "STRING",
"value": "ACCOUNT"
},
{
"type": "STRING",
"value": "ASSET"
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [],
"externals": [],
"inline": [],
"supertypes": []
}