diff options
| author | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
| commit | a98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch) | |
| tree | 542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-antlr4.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-antlr4.js')
| -rw-r--r-- | public/prism/prism-antlr4.js | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/public/prism/prism-antlr4.js b/public/prism/prism-antlr4.js new file mode 100644 index 0000000..f7fcc78 --- /dev/null +++ b/public/prism/prism-antlr4.js @@ -0,0 +1,68 @@ +Prism.languages.antlr4 = { + comment: /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/, + string: { + pattern: /'(?:\\.|[^\\'\r\n])*'/, + greedy: true, + }, + 'character-class': { + pattern: /\[(?:\\.|[^\\\]\r\n])*\]/, + greedy: true, + alias: 'regex', + inside: { + range: { + pattern: /([^[]|(?:^|[^\\])(?:\\\\)*\\\[)-(?!\])/, + lookbehind: true, + alias: 'punctuation', + }, + escape: + /\\(?:u(?:[a-fA-F\d]{4}|\{[a-fA-F\d]+\})|[pP]\{[=\w-]+\}|[^\r\nupP])/, + punctuation: /[\[\]]/, + }, + }, + action: { + pattern: /\{(?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*\}/, + greedy: true, + inside: { + content: { + // this might be C, C++, Python, Java, C#, or any other language ANTLR4 compiles to + pattern: /(\{)[\s\S]+(?=\})/, + lookbehind: true, + }, + punctuation: /[{}]/, + }, + }, + command: { + pattern: + /(->\s*(?!\s))(?:\s*(?:,\s*)?\b[a-z]\w*(?:\s*\([^()\r\n]*\))?)+(?=\s*;)/i, + lookbehind: true, + inside: { + function: /\b\w+(?=\s*(?:[,(]|$))/, + punctuation: /[,()]/, + }, + }, + annotation: { + pattern: /@\w+(?:::\w+)*/, + alias: 'keyword', + }, + label: { + pattern: /#[ \t]*\w+/, + alias: 'punctuation', + }, + keyword: + /\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\b/, + definition: [ + { + pattern: /\b[a-z]\w*(?=\s*:)/, + alias: ['rule', 'class-name'], + }, + { + pattern: /\b[A-Z]\w*(?=\s*:)/, + alias: ['token', 'constant'], + }, + ], + constant: /\b[A-Z][A-Z_]*\b/, + operator: /\.\.|->|[|~]|[*+?]\??/, + punctuation: /[;:()=]/, +}; + +Prism.languages.g4 = Prism.languages.antlr4; |
