ISO-Share/node_modules/prismjs/components/prism-antlr4.js
2024-11-26 21:16:11 +01:00

65 lines
1.5 KiB
JavaScript

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;