Index: lib/src/prism/components/prism-bison.js |
diff --git a/lib/src/prism/components/prism-bison.js b/lib/src/prism/components/prism-bison.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9a65a537d191f8831b75e3828ece5180dcbd49d3 |
--- /dev/null |
+++ b/lib/src/prism/components/prism-bison.js |
@@ -0,0 +1,39 @@ |
+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': /%[%?]|[|:;\[\]<>]/ |
+ } |
+ } |
+}); |