Files
tree-sitter-jhcl/src/grammar.json

862 lines
17 KiB
JSON
Raw Normal View History

2021-06-07 20:50:00 +02:00
{
"name": "hcl",
"rules": {
"config_file": {
"type": "SYMBOL",
"name": "body"
},
"body": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
}
},
"attribute": {
"type": "SEQ",
"members": [
{
2021-06-08 01:28:18 +02:00
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
2021-06-07 20:50:00 +02:00
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"block": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
2021-06-08 01:28:18 +02:00
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
2021-06-07 20:50:00 +02:00
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_lit"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "body"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
2021-06-08 00:12:25 +02:00
"identifier": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\\p{L}"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\p{L}"
},
{
"type": "PATTERN",
"value": "[0-9]"
},
{
"type": "PATTERN",
"value": "\\p{Pc}"
}
]
}
}
]
}
},
2021-06-07 20:50:00 +02:00
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expr_term"
}
]
},
"expr_term": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "literal_value"
},
2021-06-08 00:04:05 +02:00
{
"type": "SYMBOL",
"name": "collection_value"
},
2021-06-07 20:50:00 +02:00
{
"type": "SYMBOL",
"name": "variable_expr"
},
2021-06-11 23:32:22 +02:00
{
"type": "SYMBOL",
"name": "function_call"
},
2021-06-08 22:32:42 +02:00
{
"type": "SYMBOL",
"name": "for_expr"
},
2021-06-08 18:50:12 +02:00
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expr_term"
},
{
"type": "SYMBOL",
"name": "index"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expr_term"
},
{
"type": "SYMBOL",
"name": "get_attr"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expr_term"
},
{
"type": "SYMBOL",
"name": "splat"
}
]
},
2021-06-07 20:50:00 +02:00
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"literal_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "numeric_lit"
},
{
"type": "SYMBOL",
"name": "string_lit"
},
2021-06-08 00:45:23 +02:00
{
"type": "SYMBOL",
"name": "bool_lit"
},
{
"type": "SYMBOL",
"name": "null_lit"
}
]
},
"numeric_lit": {
"type": "PATTERN",
"value": "[0-9]+(\\.[0-9]+([eE][-+]?[0-9]+)?)?"
},
"string_lit": {
"type": "SEQ",
"members": [
2021-06-07 20:50:00 +02:00
{
"type": "STRING",
2021-06-08 00:45:23 +02:00
"value": "\""
},
{
2021-06-08 23:31:40 +02:00
"type": "IMMEDIATE_TOKEN",
2021-06-08 00:45:23 +02:00
"content": {
2021-06-08 23:31:40 +02:00
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\\\\"\\n]"
},
{
"type": "PATTERN",
"value": "\\\\(.|\\n)"
}
]
}
2021-06-08 00:45:23 +02:00
}
2021-06-07 20:50:00 +02:00
},
{
"type": "STRING",
2021-06-08 00:45:23 +02:00
"value": "\""
}
]
},
"bool_lit": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
2021-06-07 20:50:00 +02:00
},
{
"type": "STRING",
2021-06-08 00:45:23 +02:00
"value": "false"
2021-06-07 20:50:00 +02:00
}
]
},
2021-06-08 00:45:23 +02:00
"null_lit": {
"type": "STRING",
"value": "null"
2021-06-07 20:50:00 +02:00
},
2021-06-08 00:04:05 +02:00
"collection_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "tuple"
},
{
"type": "SYMBOL",
"name": "object"
}
]
},
"tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"object": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "object_elem"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "object_elem"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"object_elem": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
2021-06-08 18:50:12 +02:00
"index": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "]"
}
]
},
"get_attr": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"splat": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attr_splat"
},
{
"type": "SYMBOL",
"name": "full_splat"
}
]
},
"attr_splat": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "get_attr"
}
}
]
},
"full_splat": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "]"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "get_attr"
},
{
"type": "SYMBOL",
"name": "index"
}
]
}
}
]
},
2021-06-08 22:32:42 +02:00
"for_expr": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "for_tuple_expr"
},
{
"type": "SYMBOL",
"name": "for_object_expr"
}
]
},
"for_tuple_expr": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "for_intro"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "for_cond"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"for_object_expr": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "for_intro"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
2021-06-11 23:57:34 +02:00
"type": "SYMBOL",
"name": "ellipsis"
2021-06-08 22:32:42 +02:00
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "for_cond"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"for_intro": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ":"
}
]
},
"for_cond": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
2021-06-07 20:50:00 +02:00
"variable_expr": {
"type": "SYMBOL",
"name": "identifier"
},
2021-06-11 23:32:22 +02:00
"function_call": {
"type": "SEQ",
"members": [
{
2021-06-11 23:41:02 +02:00
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
2021-06-11 23:32:22 +02:00
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_arguments"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"function_arguments": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
2021-06-11 23:57:34 +02:00
"type": "SYMBOL",
"name": "ellipsis"
2021-06-11 23:32:22 +02:00
}
]
},
{
"type": "BLANK"
}
]
}
]
},
2021-06-11 23:57:34 +02:00
"ellipsis": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "..."
}
},
2021-06-07 20:50:00 +02:00
"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": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [
[
"body"
2021-06-08 00:04:05 +02:00
],
[
"object_elem",
"variable_expr"
2021-06-08 18:50:12 +02:00
],
[
"attr_splat"
],
[
"full_splat"
2021-06-07 20:50:00 +02:00
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}