You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
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;
|
|
|