{ "name": "OCamlyacc", "scopeName": "source.ocamlyacc", "patterns": [ { "name": "meta.header.ocamlyacc", "begin": "(%{)\\s*$", "end": "^\\s*(%})", "patterns": [ { "include": "source.ocaml" } ], "beginCaptures": { "1": { "name": "punctuation.section.header.begin.ocamlyacc" } }, "endCaptures": { "1": { "name": "punctuation.section.header.end.ocamlyacc" } } }, { "name": "meta.declarations.ocamlyacc", "begin": "(?\u003c=%})\\s*$", "end": "(?:^)(?=%%)", "patterns": [ { "include": "#comments" }, { "include": "#declaration-matches" } ] }, { "name": "meta.rules.ocamlyacc", "begin": "(%%)\\s*$", "end": "^\\s*(%%)", "patterns": [ { "include": "#comments" }, { "include": "#rules" } ], "beginCaptures": { "1": { "name": "punctuation.section.rules.begin.ocamlyacc" } }, "endCaptures": { "1": { "name": "punctuation.section.rules.end.ocamlyacc" } } }, { "include": "source.ocaml" }, { "include": "#comments" }, { "name": "invalid.illegal.unrecognized-character.ocaml", "match": "(’|‘|“|”)" } ], "repository": { "comments": { "patterns": [ { "name": "comment.block.ocamlyacc", "begin": "/\\*", "end": "\\*/", "patterns": [ { "include": "#comments" } ] }, { "name": "comment.block.string.quoted.double.ocamlyacc", "begin": "(?=[^\\\\])(\")", "end": "\"", "patterns": [ { "name": "comment.block.string.constant.character.escape.ocamlyacc", "match": "\\\\(x[a-fA-F0-9][a-fA-F0-9]|[0-2]\\d\\d|[bnrt'\"\\\\])" } ] } ] }, "declaration-matches": { "patterns": [ { "name": "meta.token.declaration.ocamlyacc", "begin": "(%)(token)", "end": "^\\s*($|(^\\s*(?=%)))", "patterns": [ { "include": "#symbol-types" }, { "name": "entity.name.type.token.ocamlyacc", "match": "[A-Z][A-Za-z0-9_]*" }, { "include": "#comments" } ], "beginCaptures": { "1": { "name": "keyword.other.decorator.token.ocamlyacc" }, "2": { "name": "keyword.other.token.ocamlyacc" } } }, { "name": "meta.token.associativity.ocamlyacc", "begin": "(%)(left|right|nonassoc)", "end": "(^\\s*$)|(^\\s*(?=%))", "patterns": [ { "name": "entity.name.type.token.ocamlyacc", "match": "[A-Z][A-Za-z0-9_]*" }, { "name": "entity.name.function.non-terminal.reference.ocamlyacc", "match": "[a-z][A-Za-z0-9_]*" }, { "include": "#comments" } ], "beginCaptures": { "1": { "name": "keyword.other.decorator.token.associativity.ocamlyacc" }, "2": { "name": "keyword.other.token.associativity.ocamlyacc" } } }, { "name": "meta.start-symbol.ocamlyacc", "begin": "(%)(start)", "end": "(^\\s*$)|(^\\s*(?=%))", "patterns": [ { "name": "entity.name.function.non-terminal.reference.ocamlyacc", "match": "[a-z][A-Za-z0-9_]*" }, { "include": "#comments" } ], "beginCaptures": { "1": { "name": "keyword.other.decorator.start-symbol.ocamlyacc" }, "2": { "name": "keyword.other.start-symbol.ocamlyacc" } } }, { "name": "meta.symbol-type.ocamlyacc", "begin": "(%)(type)", "end": "$\\s*(?!%)", "patterns": [ { "include": "#symbol-types" }, { "name": "entity.name.type.token.reference.ocamlyacc", "match": "[A-Z][A-Za-z0-9_]*" }, { "name": "entity.name.function.non-terminal.reference.ocamlyacc", "match": "[a-z][A-Za-z0-9_]*" }, { "include": "#comments" } ], "beginCaptures": { "1": { "name": "keyword.other.decorator.symbol-type.ocamlyacc" }, "2": { "name": "keyword.other.symbol-type.ocamlyacc" } } } ] }, "precs": { "patterns": [ { "name": "meta.precidence.declaration", "match": "(%)(prec)\\s+(([a-z][a-zA-Z0-9_]*)|(([A-Z][a-zA-Z0-9_]*)))", "captures": { "1": { "name": "keyword.other.decorator.precedence.ocamlyacc" }, "2": { "name": "keyword.other.precedence.ocamlyacc" }, "4": { "name": "entity.name.function.non-terminal.reference.ocamlyacc" }, "5": { "name": "entity.name.type.token.reference.ocamlyacc" } } } ] }, "references": { "patterns": [ { "name": "entity.name.function.non-terminal.reference.ocamlyacc", "match": "[a-z][a-zA-Z0-9_]*" }, { "name": "entity.name.type.token.reference.ocamlyacc", "match": "[A-Z][a-zA-Z0-9_]*" } ] }, "rule-patterns": { "patterns": [ { "name": "meta.rule-match.ocaml", "begin": "((?\u003c!\\||:)(\\||:)(?!\\||:))", "end": "\\s*(?=\\||;)", "patterns": [ { "include": "#precs" }, { "include": "#semantic-actions" }, { "include": "#references" }, { "include": "#comments" } ], "beginCaptures": { "0": { "name": "punctuation.separator.rule.ocamlyacc" } } } ] }, "rules": { "patterns": [ { "name": "meta.non-terminal.ocamlyacc", "begin": "[a-z][a-zA-Z_]*", "end": ";", "patterns": [ { "include": "#rule-patterns" } ], "beginCaptures": { "0": { "name": "entity.name.function.non-terminal.ocamlyacc" } }, "endCaptures": { "0": { "name": "punctuation.separator.rule.ocamlyacc" } } } ] }, "semantic-actions": { "patterns": [ { "name": "meta.action.semantic.ocamlyacc", "begin": "[^\\']({)", "end": "(})", "patterns": [ { "include": "source.ocaml" } ], "beginCaptures": { "1": { "name": "punctuation.definition.action.semantic.ocamlyacc" } }, "endCaptures": { "1": { "name": "punctuation.definition.action.semantic.ocamlyacc" } } } ] }, "symbol-types": { "patterns": [ { "name": "meta.token.type-declaration.ocamlyacc", "begin": "\u003c", "end": "\u003e", "patterns": [ { "include": "source.ocaml" } ], "beginCaptures": { "0": { "name": "punctuation.definition.type-declaration.begin.ocamlyacc" } }, "endCaptures": { "0": { "name": "punctuation.definition.type-declaration.end.ocamlyacc" } } } ] } } }