40 lines
982 B
JavaScript
40 lines
982 B
JavaScript
|
Prism.languages.bison = Prism.languages.extend('c', {});
|
||
|
|
||
|
Prism.languages.insertBefore('bison', 'comment', {
|
||
|
'bison': {
|
||
|
// This should match all the beginning of the file
|
||
|
// including the prologue(s), the bison declarations and
|
||
|
// the grammar rules.
|
||
|
pattern: /^(?:[^%]|%(?!%))*%%[\s\S]*?%%/,
|
||
|
inside: {
|
||
|
'c': {
|
||
|
// Allow for one level of nested braces
|
||
|
pattern: /%\{[\s\S]*?%\}|\{(?:\{[^}]*\}|[^{}])*\}/,
|
||
|
inside: {
|
||
|
'delimiter': {
|
||
|
pattern: /^%?\{|%?\}$/,
|
||
|
alias: 'punctuation'
|
||
|
},
|
||
|
'bison-variable': {
|
||
|
pattern: /[$@](?:<[^\s>]+>)?[\w$]+/,
|
||
|
alias: 'variable',
|
||
|
inside: {
|
||
|
'punctuation': /<|>/
|
||
|
}
|
||
|
},
|
||
|
rest: Prism.languages.c
|
||
|
}
|
||
|
},
|
||
|
'comment': Prism.languages.c.comment,
|
||
|
'string': Prism.languages.c.string,
|
||
|
'property': /\S+(?=:)/,
|
||
|
'keyword': /%\w+/,
|
||
|
'number': {
|
||
|
pattern: /(^|[^@])\b(?:0x[\da-f]+|\d+)/i,
|
||
|
lookbehind: true
|
||
|
},
|
||
|
'punctuation': /%[%?]|[|:;\[\]<>]/
|
||
|
}
|
||
|
}
|
||
|
});
|