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