{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "forge_card_script",
"rules": {
"card_script": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "face"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "face_separator"
},
{
"type": "SYMBOL",
"name": "face"
}
]
}
}
]
},
"face": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_content_line"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
}
},
"face_separator": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "ALTERNATE"
},
"named": true,
"value": "alternate_keyword"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"_content_line": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ability_line"
},
{
"type": "SYMBOL",
"name": "trigger_line"
},
{
"type": "SYMBOL",
"name": "static_ability_line"
},
{
"type": "SYMBOL",
"name": "replacement_line"
},
{
"type": "SYMBOL",
"name": "svar_line"
},
{
"type": "SYMBOL",
"name": "keyword_line"
},
{
"type": "SYMBOL",
"name": "alternate_mode_line"
},
{
"type": "SYMBOL",
"name": "specialize_line"
},
{
"type": "SYMBOL",
"name": "ignored_line"
},
{
"type": "SYMBOL",
"name": "field_line"
},
{
"type": "SYMBOL",
"name": "comment_line"
}
]
},
"comment_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]*"
},
"named": true,
"value": "comment_text"
},
{
"type": "BLANK"
}
]
}
]
},
"field_line": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_field_key"
},
"named": true,
"value": "key"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]*"
},
"named": true,
"value": "value"
},
{
"type": "BLANK"
}
]
}
]
},
"_field_key": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Name"
},
{
"type": "STRING",
"value": "ManaCost"
},
{
"type": "STRING",
"value": "Types"
},
{
"type": "STRING",
"value": "PT"
},
{
"type": "STRING",
"value": "Colors"
},
{
"type": "STRING",
"value": "Defense"
},
{
"type": "STRING",
"value": "Loyalty"
},
{
"type": "STRING",
"value": "Oracle"
},
{
"type": "STRING",
"value": "Text"
},
{
"type": "STRING",
"value": "FlavorName"
},
{
"type": "STRING",
"value": "Lights"
},
{
"type": "STRING",
"value": "MeldPair"
},
{
"type": "STRING",
"value": "Draft"
},
{
"type": "STRING",
"value": "Variant"
}
]
},
"alternate_mode_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "AlternateMode"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]*"
},
"named": true,
"value": "value"
},
{
"type": "BLANK"
}
]
}
]
},
"specialize_line": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "SPECIALIZE[^:\\n]*"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]*"
},
"named": true,
"value": "value"
},
{
"type": "BLANK"
}
]
}
]
},
"ignored_line": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_ignored_key"
},
"named": true,
"value": "key"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]*"
},
"named": true,
"value": "value"
},
{
"type": "BLANK"
}
]
}
]
},
"_ignored_key": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "AI"
},
{
"type": "STRING",
"value": "DeckHints"
},
{
"type": "STRING",
"value": "DeckNeeds"
},
{
"type": "STRING",
"value": "DeckHas"
},
{
"type": "STRING",
"value": "HandLifeModifier"
}
]
},
"ability_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "A"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "ability_body"
}
]
},
"ability_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "ability_record"
},
{
"type": "STRING",
"value": "$"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^|\\n]*"
},
"named": true,
"value": "api_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "param_record"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"ability_record": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "SP"
},
{
"type": "STRING",
"value": "AB"
}
]
},
"trigger_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "T"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "param_record"
}
]
},
"static_ability_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "S"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "param_record"
}
]
},
"replacement_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "R"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "param_record"
}
]
},
"svar_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "SVar"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[A-Za-z_][A-Za-z0-9_]*"
},
"named": true,
"value": "svar_name"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]+"
},
"named": true,
"value": "svar_value"
}
]
},
"keyword_line": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "K"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "[^\\n]+"
},
"named": true,
"value": "keyword_value"
}
]
},
"param_record": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "param"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SYMBOL",
"name": "param"
}
]
}
}
]
},
"param": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_param_key"
},
"named": true,
"value": "param_key"
},
{
"type": "STRING",
"value": "$"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": " "
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_param_value"
},
"named": true,
"value": "param_value"
},
{
"type": "BLANK"
}
]
}
]
},
"_param_key": {
"type": "PATTERN",
"value": "[^$|\\n]+"
},
"_param_value": {
"type": "PATTERN",
"value": "[^|\\n]+"
},
"_newline": {
"type": "PATTERN",
"value": "\\r?\\n"
}
},
"extras": [],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}