{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "webfluent",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_declaration"
}
},
"_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "page_declaration"
},
{
"type": "SYMBOL",
"name": "component_declaration"
},
{
"type": "SYMBOL",
"name": "store_declaration"
},
{
"type": "SYMBOL",
"name": "app_declaration"
}
]
},
"page_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Page"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"component_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Component"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"store_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "Store"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"app_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "App"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"parameter_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "parameter"
}
]
}
}
]
},
"parameter": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "type_annotation"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"argument_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_argument"
}
]
}
}
]
},
"_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "named_argument"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "modifier"
}
]
},
"named_argument": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"modifier": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "primary"
},
{
"type": "STRING",
"value": "secondary"
},
{
"type": "STRING",
"value": "success"
},
{
"type": "STRING",
"value": "danger"
},
{
"type": "STRING",
"value": "warning"
},
{
"type": "STRING",
"value": "info"
},
{
"type": "STRING",
"value": "small"
},
{
"type": "STRING",
"value": "medium"
},
{
"type": "STRING",
"value": "large"
},
{
"type": "STRING",
"value": "bold"
},
{
"type": "STRING",
"value": "italic"
},
{
"type": "STRING",
"value": "underline"
},
{
"type": "STRING",
"value": "uppercase"
},
{
"type": "STRING",
"value": "lowercase"
},
{
"type": "STRING",
"value": "center"
},
{
"type": "STRING",
"value": "right"
},
{
"type": "STRING",
"value": "muted"
},
{
"type": "STRING",
"value": "heading"
},
{
"type": "STRING",
"value": "elevated"
},
{
"type": "STRING",
"value": "outlined"
},
{
"type": "STRING",
"value": "flat"
},
{
"type": "STRING",
"value": "full"
},
{
"type": "STRING",
"value": "fit"
},
{
"type": "STRING",
"value": "rounded"
},
{
"type": "STRING",
"value": "pill"
},
{
"type": "STRING",
"value": "square"
},
{
"type": "STRING",
"value": "block"
},
{
"type": "STRING",
"value": "ordered"
},
{
"type": "STRING",
"value": "dismissible"
},
{
"type": "STRING",
"value": "fadeIn"
},
{
"type": "STRING",
"value": "fadeOut"
},
{
"type": "STRING",
"value": "slideUp"
},
{
"type": "STRING",
"value": "slideDown"
},
{
"type": "STRING",
"value": "slideLeft"
},
{
"type": "STRING",
"value": "slideRight"
},
{
"type": "STRING",
"value": "scaleIn"
},
{
"type": "STRING",
"value": "scaleOut"
},
{
"type": "STRING",
"value": "bounce"
},
{
"type": "STRING",
"value": "shake"
},
{
"type": "STRING",
"value": "pulse"
},
{
"type": "STRING",
"value": "spin"
},
{
"type": "STRING",
"value": "fast"
},
{
"type": "STRING",
"value": "slow"
},
{
"type": "STRING",
"value": "h1"
},
{
"type": "STRING",
"value": "h2"
},
{
"type": "STRING",
"value": "h3"
},
{
"type": "STRING",
"value": "h4"
},
{
"type": "STRING",
"value": "h5"
},
{
"type": "STRING",
"value": "h6"
},
{
"type": "STRING",
"value": "sm"
},
{
"type": "STRING",
"value": "md"
},
{
"type": "STRING",
"value": "lg"
},
{
"type": "STRING",
"value": "xl"
}
]
}
},
"type_annotation": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "String"
},
{
"type": "STRING",
"value": "Number"
},
{
"type": "STRING",
"value": "Bool"
},
{
"type": "STRING",
"value": "List"
},
{
"type": "STRING",
"value": "Map"
}
]
}
},
"block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "state_declaration"
},
{
"type": "SYMBOL",
"name": "derived_declaration"
},
{
"type": "SYMBOL",
"name": "effect_declaration"
},
{
"type": "SYMBOL",
"name": "action_declaration"
},
{
"type": "SYMBOL",
"name": "use_declaration"
},
{
"type": "SYMBOL",
"name": "ui_element"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "show_statement"
},
{
"type": "SYMBOL",
"name": "fetch_statement"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "event_handler"
},
{
"type": "SYMBOL",
"name": "style_block"
},
{
"type": "SYMBOL",
"name": "transition_block"
},
{
"type": "SYMBOL",
"name": "navigate_call"
},
{
"type": "SYMBOL",
"name": "expression_statement"
}
]
},
"state_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "state"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"derived_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "derived"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"effect_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "effect"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"action_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "action"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"use_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "use"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"navigate_call": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "navigate"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"assignment": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"expression_statement": {
"type": "SYMBOL",
"name": "_expression"
},
"ui_element": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "component_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "BLANK"
}
]
}
]
}
},
"component_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "sub_component"
},
{
"type": "SYMBOL",
"name": "builtin_component"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"sub_component": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "parent",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "child",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"builtin_component": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Container"
},
{
"type": "STRING",
"value": "Row"
},
{
"type": "STRING",
"value": "Column"
},
{
"type": "STRING",
"value": "Grid"
},
{
"type": "STRING",
"value": "Stack"
},
{
"type": "STRING",
"value": "Spacer"
},
{
"type": "STRING",
"value": "Divider"
},
{
"type": "STRING",
"value": "Navbar"
},
{
"type": "STRING",
"value": "Sidebar"
},
{
"type": "STRING",
"value": "Link"
},
{
"type": "STRING",
"value": "Tabs"
},
{
"type": "STRING",
"value": "TabPage"
},
{
"type": "STRING",
"value": "Breadcrumb"
},
{
"type": "STRING",
"value": "Menu"
},
{
"type": "STRING",
"value": "Card"
},
{
"type": "STRING",
"value": "Table"
},
{
"type": "STRING",
"value": "Thead"
},
{
"type": "STRING",
"value": "Tbody"
},
{
"type": "STRING",
"value": "Trow"
},
{
"type": "STRING",
"value": "Tcell"
},
{
"type": "STRING",
"value": "List"
},
{
"type": "STRING",
"value": "Badge"
},
{
"type": "STRING",
"value": "Avatar"
},
{
"type": "STRING",
"value": "Tooltip"
},
{
"type": "STRING",
"value": "Tag"
},
{
"type": "STRING",
"value": "Input"
},
{
"type": "STRING",
"value": "Select"
},
{
"type": "STRING",
"value": "Option"
},
{
"type": "STRING",
"value": "Checkbox"
},
{
"type": "STRING",
"value": "Radio"
},
{
"type": "STRING",
"value": "Switch"
},
{
"type": "STRING",
"value": "Slider"
},
{
"type": "STRING",
"value": "DatePicker"
},
{
"type": "STRING",
"value": "FileUpload"
},
{
"type": "STRING",
"value": "Form"
},
{
"type": "STRING",
"value": "Alert"
},
{
"type": "STRING",
"value": "Toast"
},
{
"type": "STRING",
"value": "Modal"
},
{
"type": "STRING",
"value": "Dialog"
},
{
"type": "STRING",
"value": "Spinner"
},
{
"type": "STRING",
"value": "Progress"
},
{
"type": "STRING",
"value": "Skeleton"
},
{
"type": "STRING",
"value": "Button"
},
{
"type": "STRING",
"value": "IconButton"
},
{
"type": "STRING",
"value": "ButtonGroup"
},
{
"type": "STRING",
"value": "Dropdown"
},
{
"type": "STRING",
"value": "Image"
},
{
"type": "STRING",
"value": "Video"
},
{
"type": "STRING",
"value": "Icon"
},
{
"type": "STRING",
"value": "Carousel"
},
{
"type": "STRING",
"value": "Text"
},
{
"type": "STRING",
"value": "Heading"
},
{
"type": "STRING",
"value": "Code"
},
{
"type": "STRING",
"value": "Blockquote"
},
{
"type": "STRING",
"value": "Document"
},
{
"type": "STRING",
"value": "Section"
},
{
"type": "STRING",
"value": "Paragraph"
},
{
"type": "STRING",
"value": "Header"
},
{
"type": "STRING",
"value": "Footer"
},
{
"type": "STRING",
"value": "PageBreak"
},
{
"type": "STRING",
"value": "Router"
},
{
"type": "STRING",
"value": "Route"
}
]
}
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "animate_clause"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "block"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"for_statement": {
"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": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "animate_clause"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"show_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "show"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "animate_clause"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"animate_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "animate"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"fetch_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fetch"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "fetch_block"
}
]
},
"fetch_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "loading_block"
},
{
"type": "SYMBOL",
"name": "error_block"
},
{
"type": "SYMBOL",
"name": "success_block"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"loading_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "loading"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"error_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "error"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"success_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "success"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"event_handler": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "event_name"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"event_name": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "on:"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "click"
},
{
"type": "STRING",
"value": "input"
},
{
"type": "STRING",
"value": "change"
},
{
"type": "STRING",
"value": "submit"
},
{
"type": "STRING",
"value": "focus"
},
{
"type": "STRING",
"value": "blur"
},
{
"type": "STRING",
"value": "keydown"
},
{
"type": "STRING",
"value": "keyup"
},
{
"type": "STRING",
"value": "keypress"
},
{
"type": "STRING",
"value": "mouseenter"
},
{
"type": "STRING",
"value": "mouseleave"
}
]
}
]
}
},
"style_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "style"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "style_property"
},
{
"type": "SYMBOL",
"name": "media_query"
}
]
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"style_property": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "property_name"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"property_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"media_query": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "@media"
}
},
{
"type": "PATTERN",
"value": "[^{]+"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "style_property"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"transition_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "transition"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "transition_property"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"transition_property": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "member_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "null"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "object"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "t_call"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"binary_expression": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"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": "SYMBOL",
"name": "_expression"
}
]
}
},
"unary_expression": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
"member_expression": {
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
"call_expression": {
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"t_call": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "t"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "argument_list"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "interpolation"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "string_content"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"string_content": {
"type": "PATTERN",
"value": "[^\"\\\\{]+"
},
"interpolation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "}"
}
]
},
"escape_sequence": {
"type": "PATTERN",
"value": "\\\\."
},
"number": {
"type": "PATTERN",
"value": "\\d+(\\.\\d+)?"
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"null": {
"type": "STRING",
"value": "null"
},
"array": {
"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_entry"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "object_entry"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"object_entry": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
},
"comment": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": ".*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [
[
"component_name",
"_expression"
],
[
"sub_component",
"_expression"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": []
}