-
-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathvhdl.js
35 lines (34 loc) · 1.54 KB
/
vhdl.js
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
// @ts-nocheck
vhdl.displayName = 'vhdl'
vhdl.aliases = []
/** @type {import('../core.js').Syntax} */
export default function vhdl(Prism) {
Prism.languages.vhdl = {
comment: /--.+/,
// support for all logic vectors
'vhdl-vectors': {
pattern: /\b[oxb]"[\da-f_]+"|"[01uxzwlh-]+"/i,
alias: 'number'
},
// support for operator overloading included
'quoted-function': {
pattern: /"\S+?"(?=\()/,
alias: 'function'
},
string: /"(?:[^\\"\r\n]|\\(?:\r\n|[\s\S]))*"/,
attribute: {
pattern: /\b'\w+/,
alias: 'attr-name'
},
// 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|private|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|view|wait|when|while|with)\b/i,
boolean: /\b(?:false|true)\b/i,
function: /\w+(?=\()/,
// decimal, based, physical, and exponential numbers supported
number: /'[01uxzwlh-]'|\b(?:\d+#[\da-f_.]+#|\d[\d_.]*)(?:e[-+]?\d+)?/i,
operator:
/[<>]=?|:=|[-+*/&=]|\b(?:abs|and|mod|nand|nor|not|or|rem|rol|ror|sla|sll|sra|srl|xnor|xor)\b/i,
punctuation: /[{}[\];(),.:]/
}
}