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

433 lines
8.5 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": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"block": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"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": "}"
}
]
},
"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"
},
{
"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"
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "null"
}
]
},
"numeric_lit": {
2021-06-07 22:32:14 +02:00
"type": "PATTERN",
"value": "[0-9]+(\\.[0-9]+([eE][-+]?[0-9]+)?)?"
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-07 20:50:00 +02:00
"variable_expr": {
"type": "SYMBOL",
"name": "identifier"
},
"string_lit": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "PATTERN",
"value": "\\w+"
},
{
"type": "STRING",
"value": "\""
}
]
},
"identifier": {
2021-06-08 00:04:05 +02:00
"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
},
"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-07 20:50:00 +02:00
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}