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]*?%%[\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': /%[%?]|[|:;\[\]<>]/ } } });