vscode-ebnf

EBNF for Visual Studio Code
Mirror of https://github.com/Jamozed/vscode-ebnf
git clone http://git.omkov.net/vscode-ebnf
Log | Tree | Refs | README | LICENCE | Download

vscode-ebnf/syntaxes/ebnf.tmLanguage.json (81 lines, 1.5 KiB) -rw-r--r-- blame download

01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
{
	"name": "EBNF",
	"scopeName": "text.ebnf",
	"patterns": [
		{ "include": "#comment" },
		{ "include": "#rule" }
	],
	"repository": {
		"comment": {
			"name": "comment.block.ebnf",
			"begin": "\\(\\*",
			"end": "\\*\\)",
			"patterns": [
				{
					"name": "keyword.other.ebnf",
					"match": "\\b(TODO|FIXME)\\b"
				}
			]
		},
		"rule": {
			"begin": "([a-zA-Z_][a-zA-Z0-9_ ]*)\\s*(=)",
			"end": "(;)",
			"beginCaptures": {
				"1": { "name": "entity.name.class.ebnf" },
				"2": { "name": "keyword.other.ebnf" }
			},
			"endCaptures": {
				"1": { "name": "keyword.other.ebnf" }
			},
			"patterns": [
				{ "include": "#comment" },
				{ "include": "#symbol" },
				{ "include": "#operator" },
				{ "include": "#string" }
			]
		},
		"symbol": {
			"patterns": [
				{
					"name": "support.variable.ebnf",
					"match": "\\b[A-Z][A-Z0-9_]*\\b"
				},
				{
					"name": "entity.name.class.ebnf",
					"match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
				}
			]
		},
		"operator": {
			"name": "keyword.control.ebnf",
			"match": "[,|\\[\\]{}()*?-]"
		},
		"string": {
			"patterns": [
				{
					"name": "string.quoted.single.ebnf",
					"begin": "'",
					"end": "'",
					"patterns": [
						{
							"name": "constant.character.escape.ebnf",
							"match": "\\\\."
						}
					]
				},
				{
					"name": "string.quoted.double.ebnf",
					"begin": "\"",
					"end": "\"",
					"patterns": [
						{
							"name": "constant.character.escape.ebnf",
							"match": "\\\\."
						}
					]
				}
			]
		}
	}
}