adding vhdl language
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
diff --git a/components.js b/components.js
index 7be1869..52988bf 100644
--- a/components.js
+++ b/components.js
@@ -322,6 +322,10 @@ var components = {
"require": "javascript",
"owner": "vkbansal"
},
+ "vhdl": {
+ "title": "VHDL",
+ "owner": "a-rey"
+ },
"wiki": {
"title": "Wiki markup",
"require": "markup",
diff --git a/components/prism-vhdl.js b/components/prism-vhdl.js
new file mode 100644
index 0000000..41bff16
--- /dev/null
+++ b/components/prism-vhdl.js
@@ -0,0 +1,24 @@
+Prism.languages.vhdl = {
+ 'comment': /(--[^\r\n]+)/,
+ // support for all logic vectors
+ 'vhdl-vectors': {
+ 'pattern': /(\b[oOxXbB]"[\dA-Fa-f_]+"|"[UuXx01ZzWwLlHh-]+")/,
+ 'alias': 'number'
+ },
+ 'string': /(")(\\\n|\\?.)*?"/,
+ 'constant': /\b(use|library)\b/i,
+ // support for predefined attributes included
+ 'keyword': /\b(access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|report|return|select|severity|signal|shared|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|'base|'left|'right|'high|'low|'ascending|'image|'value|'pos|'val|'succ|'pred|'leftof|'rightof|'left|'left|'right|'right|'high|'high|'low|'low|'range|'range|'reverse_range|'reverse_range|'length|'length|'ascending|'ascending|'delayed|'stable|'stable|'quiet|'quiet|'transaction|'event|'active|'last_event|'last_active|'last_value|'driving|'driving_value|'simple_name|'instance_name|'path_name)\b/i,
+ 'boolean': /\b(true|false)\b/i,
+ 'function': {
+ // support for operator overloading included
+ pattern: /([a-z0-9_]+|"\S+")\(/i,
+ inside: {
+ punctuation: /\(/
+ }
+ },
+ // decimal, based, physical, and exponential numbers supported
+ 'number': /('[UuXx01ZzWwLlHh-]'|\b\d+([_.]+)?(#[\dA-Fa-f_.]+#)?([eE][-+]?\d+)?)/,
+ 'operator': /[-+]{1}|<=?|>=?|=|:=|&|\*|\/|\b(abs|not|mod|rem|sll|srl|sla|sra|rol|ror|and|or|nand|xnor|xor|nor)\b/i,
+ 'punctuation': /[{}[\];(),.:]/
+};