100 lines
1.8 KiB
JSON
100 lines
1.8 KiB
JSON
{
|
|
"name": "precedence_on_token",
|
|
|
|
"extras": [
|
|
{"type": "SYMBOL", "name": "comment"},
|
|
{"type": "PATTERN", "value": "\\s"}
|
|
],
|
|
|
|
"rules": {
|
|
"program": {
|
|
"type": "REPEAT",
|
|
"content": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "string"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "regex"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "identifier"
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "slash"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
"comment": {
|
|
"type": "TOKEN",
|
|
"content": {
|
|
"type": "PREC",
|
|
"value": 1,
|
|
"content": {
|
|
"type": "PATTERN",
|
|
"value": "//.*|/\\*[^*]*\\*/"
|
|
}
|
|
}
|
|
},
|
|
|
|
"string": {
|
|
"type": "SEQ",
|
|
"members": [
|
|
{"type": "STRING", "value": "\""},
|
|
|
|
{
|
|
"type": "REPEAT",
|
|
"content": {
|
|
"type": "CHOICE",
|
|
"members": [
|
|
{
|
|
"type": "TOKEN",
|
|
"content": {
|
|
"type": "PREC",
|
|
"value": 2,
|
|
"content": {
|
|
"type": "PATTERN",
|
|
"value": "[^\"\n\\\\]+"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "SYMBOL",
|
|
"name": "escape_sequence"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
{"type": "STRING", "value": "\""}
|
|
]
|
|
},
|
|
|
|
"escape_sequence": {
|
|
"type": "PATTERN",
|
|
"value": "\\\\."
|
|
},
|
|
|
|
"regex": {
|
|
"type": "PATTERN",
|
|
"value": "/[^/\n]+/[a-z]*"
|
|
},
|
|
|
|
"identifier": {
|
|
"type": "PATTERN",
|
|
"value": "[a-z]\\w*"
|
|
},
|
|
|
|
"slash": {
|
|
"type": "STRING",
|
|
"value": "/"
|
|
}
|
|
}
|
|
}
|