Skip to content
This repository was archived by the owner on Apr 22, 2020. It is now read-only.

Commit 7bd02a5

Browse files
added Le Poussin's VHDL mode
1 parent e0b590b commit 7bd02a5

File tree

2 files changed

+115
-1
lines changed

2 files changed

+115
-1
lines changed

src/lang-vhdl.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* @fileoverview
3+
* Registers a language handler for VHDL '93.
4+
*
5+
* Based on the lexical grammar and keywords at
6+
* http://www.iis.ee.ethz.ch/~zimmi/download/vhdl93_syntax.html
7+
*
8+
9+
*/
10+
11+
PR.registerLangHandler(
12+
PR.createSimpleLexer(
13+
[
14+
// Whitespace
15+
[PR.PR_PLAIN, /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'],
16+
],
17+
[
18+
// String, character or bit string
19+
[PR.PR_STRING, /^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],
20+
// Comment, from two dashes until end of line.
21+
[PR.PR_COMMENT, /^--[^\r\n]*/],
22+
[PR.PR_KEYWORD, /^(?:abs|access|after|alias|all|and|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|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, null],
23+
// Type, predefined or standard
24+
[PR.PR_TYPE, /^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i, null],
25+
// Predefined attributes
26+
[PR.PR_TYPE, /^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i, null],
27+
// Number, decimal or based literal
28+
[PR.PR_LITERAL, /^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
29+
// Identifier, basic or extended
30+
[PR.PR_PLAIN, /^(?:[a-z]\w*|\\[^\\]*\\)/i],
31+
// Punctuation
32+
[PR.PR_PUNCTUATION, /^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]
33+
]),
34+
['vhdl', 'vhd']);

tests/prettify_test.html

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
onerror="alert('Error: failed to load ' + this.src)"></script>
2121
<script src="../src/lang-wiki.js" type="text/javascript"
2222
onerror="alert('Error: failed to load ' + this.src)"></script>
23+
<script src="../src/lang-vhdl.js" type="text/javascript"
24+
onerror="alert('Error: failed to load ' + this.src)"></script>
2325
<script src="../src/lang-vb.js" type="text/javascript"
2426
onerror="alert('Error: failed to load ' + this.src)"></script>
2527
<script src="test_base.js" type="text/javascript"
@@ -1075,6 +1077,46 @@ <h1>Issue 93 -- C# verbatim strings</h1>
10751077
// is equivalent to a verbatim string
10761078
string b = @"C:\";
10771079
</pre>
1080+
1081+
<h1>VHDL mode</h1>
1082+
<pre class="prettyprint lang-vhdl" id="vhdl">
1083+
library ieee;
1084+
use ieee.std_logic_1164.all;
1085+
use ieee.numeric_std.all;
1086+
1087+
-- A line comment
1088+
entity foo_entity is
1089+
1090+
generic (-- comment after punc
1091+
a : natural := 42;
1092+
x : real := 16#ab.cd#-3
1093+
);
1094+
port (
1095+
clk_i : in std_logic;
1096+
b_i : in natural range 0 to 100;
1097+
c_o : out std_logic_vector(5 downto 0);
1098+
\a "name"\ : out integer -- extended identifier
1099+
);
1100+
1101+
end entity foo_entity;
1102+
1103+
architecture foo_architecture of foo_entity is
1104+
signal bar_s : std_logic_vector(2 downto 0);
1105+
begin
1106+
1107+
bar_s &lt;= b"101";
1108+
1109+
dummy_p : process (clk_i)
1110+
begin
1111+
if b_i = 1 then
1112+
c_o &lt;= (others => '0');
1113+
elsif rising_edge(clk_i) then
1114+
c_o &lt;= "1011" &amp; bar_s(1 downto 0);
1115+
end if;
1116+
end process dummy_p;
1117+
1118+
end architecture foo_architecture;
1119+
</pre>
10781120
</body>
10791121

10801122
<script type="text/javascript">
@@ -2474,7 +2516,45 @@ <h1>Issue 93 -- C# verbatim strings</h1>
24742516
issue93: '`COM// The normal string syntax`END`PLN<br>' +
24752517
'`END`KWDstring`END`PLN a `END`PUN=`END`PLN `END`STR"C:\\\\"`END`PUN;`END`PLN<br>' +
24762518
'`END`COM// is equivalent to a verbatim string`END`PLN<br>' +
2477-
'`END`KWDstring`END`PLN b `END`PUN=`END`PLN `END`STR@"C:\\"`END`PUN;`END'
2519+
'`END`KWDstring`END`PLN b `END`PUN=`END`PLN `END`STR@"C:\\"`END`PUN;`END',
2520+
vhdl: '`KWDlibrary`END`PLN ieee`END`PUN;`END`PLN<br>' +
2521+
'`END`KWDuse`END`PLN ieee`END`PUN.`END`PLNstd_logic_1164`END`PUN.`END`KWDall`END`PUN;`END`PLN<br>' +
2522+
'`END`KWDuse`END`PLN ieee`END`PUN.`END`PLNnumeric_std`END`PUN.`END`KWDall`END`PUN;`END`PLN<br>' +
2523+
'<br>' +
2524+
'`END`COM-- A line comment`END`PLN<br>' +
2525+
'`END`KWDentity`END`PLN foo_entity `END`KWDis`END`PLN<br>' +
2526+
'<br>' +
2527+
'&nbsp; `END`KWDgeneric`END`PLN `END`PUN(`END`COM-- comment after punc`END`PLN<br>' +
2528+
'&nbsp; &nbsp; a `END`PUN:`END`PLN `END`TYPnatural`END`PLN `END`PUN:=`END' +
2529+
'`PLN `END`LIT42`END`PUN;`END`PLN<br>' +
2530+
'&nbsp; &nbsp; x `END`PUN:`END`PLN `END`TYPreal`END`PLN `END' +
2531+
'`PUN:=`END`PLN `END`LIT16#ab.cd#-3`END`PLN<br>' +
2532+
'&nbsp; `END`PUN);`END`PLN<br>' +
2533+
'&nbsp; `END`KWDport`END`PLN `END`PUN(`END`PLN<br>' +
2534+
'&nbsp; &nbsp; clk_i `END`PUN:`END`PLN `END`KWDin`END`PLN &nbsp;`END`TYPstd_logic`END`PUN;`END`PLN<br>' +
2535+
'&nbsp; &nbsp; b_i &nbsp; `END`PUN:`END`PLN `END`KWDin`END`PLN &nbsp;`END`TYPnatural`END`PLN `END`KWDrange`END`PLN `END`LIT0`END`PLN `END`KWDto`END`PLN `END`LIT100`END`PUN;`END`PLN<br>' +
2536+
'&nbsp; &nbsp; c_o &nbsp; `END`PUN:`END`PLN `END`KWDout`END`PLN `END`TYPstd_logic_vector`END`PUN(`END`LIT5`END`PLN `END`KWDdownto`END`PLN `END`LIT0`END`PUN);`END`PLN<br>' +
2537+
'&nbsp; &nbsp; \\a "name"\\ `END`PUN:`END`PLN `END`KWDout`END`PLN `END`TYPinteger`END`PLN &nbsp;`END`COM-- extended identifier`END`PLN<br>' +
2538+
'&nbsp; `END`PUN);`END`PLN<br>' +
2539+
'<br>' +
2540+
'`END`KWDend`END`PLN `END`KWDentity`END`PLN foo_entity`END`PUN;`END`PLN<br>' +
2541+
'<br>' +
2542+
'`END`KWDarchitecture`END`PLN foo_architecture `END`KWDof`END`PLN foo_entity `END`KWDis`END`PLN<br>' +
2543+
'&nbsp; `END`KWDsignal`END`PLN bar_s `END`PUN:`END`PLN `END`TYPstd_logic_vector`END`PUN(`END`LIT2`END`PLN `END`KWDdownto`END`PLN `END`LIT0`END`PUN);`END`PLN<br>' +
2544+
'`END`KWDbegin`END`PLN<br>' +
2545+
'&nbsp; <br>' +
2546+
'&nbsp; bar_s `END`PUN&lt;=`END`PLN `END`STRb"101"`END`PUN;`END`PLN<br>' +
2547+
'<br>' +
2548+
'&nbsp; dummy_p `END`PUN:`END`PLN `END`KWDprocess`END`PLN `END`PUN(`END`PLNclk_i`END`PUN)`END`PLN<br>' +
2549+
'&nbsp; `END`KWDbegin`END`PLN<br>' +
2550+
'&nbsp; &nbsp; `END`KWDif`END`PLN b_i `END`PUN=`END`PLN `END`LIT1`END`PLN `END`KWDthen`END`PLN<br>' +
2551+
'&nbsp; &nbsp; &nbsp; c_o `END`PUN&lt;=`END`PLN `END`PUN(`END`KWDothers`END`PLN `END`PUN=&gt;`END`PLN `END`STR\'0\'`END`PUN);`END`PLN<br>' +
2552+
'&nbsp; &nbsp; `END`KWDelsif`END`PLN rising_edge`END`PUN(`END`PLNclk_i`END`PUN)`END`PLN `END`KWDthen`END`PLN<br>' +
2553+
'&nbsp; &nbsp; &nbsp; c_o `END`PUN&lt;=`END`PLN `END`STR"1011"`END`PLN `END`PUN&amp;`END`PLN bar_s`END`PUN(`END`LIT1`END`PLN `END`KWDdownto`END`PLN `END`LIT0`END`PUN);`END`PLN<br>' +
2554+
'&nbsp; &nbsp; `END`KWDend`END`PLN `END`KWDif`END`PUN;`END`PLN<br>' +
2555+
'&nbsp; `END`KWDend`END`PLN `END`KWDprocess`END`PLN dummy_p`END`PUN;`END`PLN<br>' +
2556+
'<br>' +
2557+
'`END`KWDend`END`PLN `END`KWDarchitecture`END`PLN foo_architecture`END`PUN;`END'
24782558
};
24792559
</script>
24802560

0 commit comments

Comments
 (0)