Created
October 26, 2020 14:25
-
-
Save lildude/8a44881b037673c42ad4f18253d30859 to your computer and use it in GitHub Desktop.
Testing Lean grammars
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "Lean", | |
"scopeName": "source.lean", | |
"patterns": [ | |
{ | |
"include": "#comments" | |
}, | |
{ | |
"name": "meta.definitioncommand.lean", | |
"begin": "\\b(?\u003c!\\.)(inductive|coinductive|structure|theorem|axiom|axioms|abbreviation|lemma|definition|def|instance|class|constant)\\b\\s+(\\{[^}]*\\})?", | |
"end": "(?=\\bwith\\b|\\bextends\\b|[:\\|\\(\\[\\{⦃\u003c\u003e])", | |
"patterns": [ | |
{ | |
"include": "#comments" | |
}, | |
{ | |
"include": "#definitionName" | |
}, | |
{ | |
"match": "," | |
} | |
], | |
"beginCaptures": { | |
"1": { | |
"name": "keyword.other.definitioncommand.lean" | |
} | |
} | |
}, | |
{ | |
"name": "storage.type.lean", | |
"match": "\\b(Prop|Type|Sort)\\b" | |
}, | |
{ | |
"name": "storage.modifier.lean", | |
"match": "\\battribute\\b\\s*\\[[^\\]]*\\]" | |
}, | |
{ | |
"name": "storage.modifier.lean", | |
"match": "@\\[[^\\]]*\\]" | |
}, | |
{ | |
"name": "keyword.control.definition.modifier.lean", | |
"match": "\\b(?\u003c!\\.)(private|meta|mutual|protected|noncomputable)\\b" | |
}, | |
{ | |
"name": "invalid.illegal.lean", | |
"match": "\\b(sorry)\\b" | |
}, | |
{ | |
"name": "keyword.other.command.lean", | |
"match": "#print\\s+(def|definition|inductive|instance|structure|axiom|axioms|class)\\b" | |
}, | |
{ | |
"name": "keyword.other.command.lean", | |
"match": "#(print|eval|reduce|check|help|exit|find|where)\\b" | |
}, | |
{ | |
"name": "keyword.other.lean", | |
"match": "\\b(?\u003c!\\.)(import|export|prelude|theory|definition|def|abbreviation|instance|renaming|hiding|exposing|parameter|parameters|begin|constant|constants|lemma|variable|variables|theorem|example|open|axiom|inductive|coinductive|with|structure|universe|universes|alias|precedence|reserve|postfix|prefix|infix|infixl|infixr|notation|end|using|namespace|section|local|set_option|extends|include|omit|class|classes|instances|raw|run_cmd|restate_axiom)(?!\\.)\\b" | |
}, | |
{ | |
"name": "keyword.other.lean", | |
"match": "\\b(?\u003c!\\.)(calc|have|this|match|do|suffices|show|by|in|at|let|forall|fun|exists|assume|from|obtain|haveI|λ)(?!\\.)\\b" | |
}, | |
{ | |
"contentName": "entity.name.lean", | |
"begin": "«", | |
"end": "»" | |
}, | |
{ | |
"name": "keyword.control.lean", | |
"match": "\\b(?\u003c!\\.)(if|then|else)\\b" | |
}, | |
{ | |
"name": "string.quoted.double.lean", | |
"begin": "\"", | |
"end": "\"", | |
"patterns": [ | |
{ | |
"name": "constant.character.escape.lean", | |
"match": "\\\\[\\\\\"nt']" | |
}, | |
{ | |
"name": "constant.character.escape.lean", | |
"match": "\\\\x[0-9A-Fa-f][0-9A-Fa-f]" | |
}, | |
{ | |
"name": "constant.character.escape.lean", | |
"match": "\\\\u[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]" | |
} | |
], | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.lean" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.lean" | |
} | |
} | |
}, | |
{ | |
"name": "string.quoted.single.lean", | |
"match": "'[^\\\\']'" | |
}, | |
{ | |
"name": "string.quoted.single.lean", | |
"match": "'(\\\\(x..|u....|.))'", | |
"captures": { | |
"1": { | |
"name": "constant.character.escape.lean" | |
} | |
} | |
}, | |
{ | |
"name": "entity.name.lean", | |
"match": "`+[^\\[(]\\S+" | |
}, | |
{ | |
"name": "constant.numeric.lean", | |
"match": "\\b([0-9]+|0([xX][0-9a-fA-F]+))\\b" | |
} | |
], | |
"repository": { | |
"blockComment": { | |
"name": "comment.block.lean", | |
"begin": "/-", | |
"end": "-/", | |
"patterns": [ | |
{ | |
"include": "source.lean.markdown" | |
}, | |
{ | |
"include": "#blockComment" | |
} | |
] | |
}, | |
"comments": { | |
"patterns": [ | |
{ | |
"include": "#dashComment" | |
}, | |
{ | |
"include": "#docComment" | |
}, | |
{ | |
"include": "#stringBlock" | |
}, | |
{ | |
"include": "#modDocComment" | |
}, | |
{ | |
"include": "#blockComment" | |
} | |
] | |
}, | |
"dashComment": { | |
"name": "comment.line.double-dash.lean", | |
"begin": "(--)", | |
"end": "$", | |
"patterns": [ | |
{ | |
"include": "source.lean.markdown" | |
} | |
], | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.lean" | |
} | |
} | |
}, | |
"definitionName": { | |
"patterns": [ | |
{ | |
"name": "entity.name.function.lean", | |
"match": "\\b[^:«»\\(\\)\\{\\}[:space:]=→λ∀?][^:«»\\(\\)\\{\\}[:space:]]*" | |
}, | |
{ | |
"contentName": "entity.name.function.lean", | |
"begin": "«", | |
"end": "»" | |
} | |
] | |
}, | |
"docComment": { | |
"name": "comment.block.documentation.lean", | |
"begin": "/--", | |
"end": "-/", | |
"patterns": [ | |
{ | |
"include": "source.lean.markdown" | |
}, | |
{ | |
"include": "#blockComment" | |
} | |
] | |
}, | |
"modDocComment": { | |
"name": "comment.block.documentation.lean", | |
"begin": "/-!", | |
"end": "-/", | |
"patterns": [ | |
{ | |
"include": "source.lean.markdown" | |
}, | |
{ | |
"include": "#blockComment" | |
} | |
] | |
}, | |
"stringBlock": { | |
"name": "comment.block.string.lean", | |
"begin": "/-\"", | |
"end": "\"-/", | |
"patterns": [ | |
{ | |
"include": "source.lean.markdown" | |
}, | |
{ | |
"include": "#blockComment" | |
} | |
] | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "Lean", | |
"scopeName": "source.lean", | |
"patterns": [ | |
{ | |
"include": "#dashComment" | |
}, | |
{ | |
"include": "#blockComment" | |
}, | |
{ | |
"name": "meta.import.lean", | |
"begin": "^\\s*(import)\\b", | |
"end": "$", | |
"beginCaptures": { | |
"1": { | |
"name": "keyword.other.lean" | |
} | |
} | |
}, | |
{ | |
"name": "meta.names.lean", | |
"begin": "\\b(inductive|structure|record|theorem|proposition|axiom|axioms|lemma|hypothesis|definition|def|instance|class|constant)\\b[ \\t\\n\\r({\\[]+([^ \\t\\n\\r{(\\[]*)", | |
"end": "[ \\t\\n\\r{(\\[]", | |
"beginCaptures": { | |
"1": { | |
"name": "keyword.other.lean" | |
}, | |
"2": { | |
"name": "variable.language.lean" | |
} | |
} | |
}, | |
{ | |
"name": "string.quoted.double.lean", | |
"begin": "\"", | |
"end": "\"", | |
"patterns": [ | |
{ | |
"name": "constant.character.escape.lean", | |
"match": "\\\\." | |
} | |
] | |
}, | |
{ | |
"name": "storage.type.lean", | |
"match": "\\b(Prop|Type[\\'₊₀-₉]?)" | |
}, | |
{ | |
"name": "storage.modifier.lean", | |
"match": "@\\[[^\\]]*\\]" | |
}, | |
{ | |
"name": "storage.modifier.lean", | |
"match": "attribute\\s*\\[[^\\]]*\\]" | |
}, | |
{ | |
"name": "keyword.other.lean", | |
"match": "\\b(import|prelude|theory|protected|private|noncomputable|mutual|meta|definition|def|instance|renaming|hiding|exposing|parameter|parameters|begin|conjecture|constant|constants|hypothesis|lemma|corollary|variable|variables|premise|premises|print|theorem|example|abbreviation|context|open|as|export|axiom|inductive|with|structure|record|universe|universes|alias|help|override|precedence|reserve|postfix|prefix|infix|infixl|infixr|notation|vm_eval|eval|check|exit|end|using|namespace|section|local|set_option|extends|include|omit|class|classes|instances|metaclasses|raw|run_command)\\b" | |
}, | |
{ | |
"name": "keyword.other.lean", | |
"match": "\\b(calc|have|assert|suppose|this|match|obtains|do|suffices|show|by|in|at|let|forall|fun|exists|if|then|else|assume|take|obtain|from)\\b" | |
}, | |
{ | |
"name": "constant.language.lua", | |
"match": "(-\u003e|==|:=|\u003c-\u003e|\\\\/|/\\\\|\u003c=|\u003e=|⁻¹)" | |
}, | |
{ | |
"name": "constant.language.lua", | |
"match": "[#@∼↔/=∧∨≠\u003c\u003e≤≥¬⬝▸+*-]" | |
}, | |
{ | |
"name": "keyword.operator.lean", | |
"match": "(?\u003c=\\s)[=→λ∀?]" | |
}, | |
{ | |
"name": "string.quoted.double.lean", | |
"begin": "\"", | |
"end": "\"", | |
"patterns": [ | |
{ | |
"name": "constant.character.escape.lean", | |
"match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])" | |
}, | |
{ | |
"name": "constant.character.escape.octal.lean", | |
"match": "\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+" | |
}, | |
{ | |
"name": "constant.character.escape.control.lean", | |
"match": "\\^[A-Z@\\[\\]\\\\\\^_]" | |
} | |
], | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.lean" | |
} | |
}, | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.lean" | |
} | |
} | |
}, | |
{ | |
"name": "constant.numeric.lean", | |
"match": "\\b([0-9]+|0([xX][0-9a-fA-F]+))\\b" | |
} | |
], | |
"repository": { | |
"blockComment": { | |
"name": "comment.block.lean", | |
"begin": "/-", | |
"end": "-/", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.comment.lean" | |
} | |
} | |
}, | |
"dashComment": { | |
"name": "comment.line.double-dash.lean", | |
"begin": "(--)", | |
"end": "$", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.lean" | |
} | |
} | |
}, | |
"identifier": { | |
"name": "entity.name.function.lean", | |
"match": "\\b[^\\(\\)\\{\\}[:space:]=→λ∀?][^\\(\\)\\{\\}[:space:]]*" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment