File Coverage

blib/lib/Syntax/Highlight/Engine/Kate/VHDL.pm
Criterion Covered Total %
statement 22 59 37.2
branch 0 26 0.0
condition 1 3 33.3
subroutine 4 10 40.0
pod 0 7 0.0
total 27 105 25.7


line stmt bran cond sub pod time code
1             # Copyright (c) 2005 - 2006 Hans Jeuken. All rights reserved.
2             # This program is free software; you can redistribute it and/or
3             # modify it under the same terms as Perl itself.
4              
5             # This file was generated from the 'vhdl.xml' file of the syntax highlight
6             # engine of the kate text editor (http://www.kate-editor.org
7              
8             #kate xml version 1.04
9             #kate version 2.1
10             #generated: Sun Feb 3 22:02:06 2008, localtime
11              
12             package Syntax::Highlight::Engine::Kate::VHDL;
13              
14             our $VERSION = '0.07';
15              
16 1     1   1646 use strict;
  1         3  
  1         51  
17 1     1   7 use warnings;
  1         3  
  1         40  
18 1     1   7 use base('Syntax::Highlight::Engine::Kate::Template');
  1         2  
  1         1589  
19              
20             sub new {
21 1     1 0 1131 my $proto = shift;
22 1   33     12 my $class = ref($proto) || $proto;
23 1         16 my $self = $class->SUPER::new(@_);
24 1         18 $self->attributes({
25             'Attribute' => 'BaseN',
26             'Bit' => 'Char',
27             'Comment' => 'Comment',
28             'Data Type' => 'DataType',
29             'Integer' => 'DecVal',
30             'Keyword' => 'Keyword',
31             'Normal Text' => 'Normal',
32             'Operator' => 'Others',
33             'Vector' => 'String',
34             });
35 1         16 $self->listAdd('keywords',
36             'ACCESS',
37             'AFTER',
38             'ALIAS',
39             'ALL',
40             'AND',
41             'ARCHITECTURE',
42             'ASSERT',
43             'BEGIN',
44             'BLOCK',
45             'BODY',
46             'BUFFER',
47             'BUS',
48             'CASE',
49             'COMPONENT',
50             'CONFIGURATION',
51             'CONSTANT',
52             'DISCONNECT',
53             'DOWNTO',
54             'ELSE',
55             'ELSIF',
56             'END',
57             'ENTITY',
58             'ERROR',
59             'EXIT',
60             'FAILURE',
61             'FILE',
62             'FOR',
63             'FUNCTION',
64             'GENERATE',
65             'GENERIC',
66             'GROUP',
67             'GUARDED',
68             'IF',
69             'IMPURE',
70             'IN',
71             'INERTIAL',
72             'INOUT',
73             'IS',
74             'LABEL',
75             'LIBRARY',
76             'LINKAGE',
77             'LITERAL',
78             'LOOP',
79             'MAP',
80             'NEW',
81             'NEXT',
82             'NOT',
83             'NOTE',
84             'NULL',
85             'OF',
86             'ON',
87             'OPEN',
88             'OR',
89             'OTHERS',
90             'OUT',
91             'PACKAGE',
92             'PORT',
93             'POSTPONED',
94             'PROCEDURE',
95             'PROCESS',
96             'PURE',
97             'RANGE',
98             'RECORD',
99             'REGISTER',
100             'REJECT',
101             'REPORT',
102             'RETURN',
103             'SELECT',
104             'SEVERITY',
105             'SHARED',
106             'SIGNAL',
107             'SUBTYPE',
108             'THEN',
109             'TO',
110             'TRANSPORT',
111             'TYPE',
112             'UNAFFECTED',
113             'UNITS',
114             'UNTIL',
115             'USE',
116             'VARIABLE',
117             'WAIT',
118             'WARNING',
119             'WHEN',
120             'WHILE',
121             'WITH',
122             'XOR',
123             'access',
124             'after',
125             'alias',
126             'all',
127             'and',
128             'architecture',
129             'assert',
130             'begin',
131             'block',
132             'body',
133             'buffer',
134             'bus',
135             'case',
136             'component',
137             'configuration',
138             'constant',
139             'disconnect',
140             'downto',
141             'else',
142             'elsif',
143             'end',
144             'entity',
145             'error',
146             'exit',
147             'failure',
148             'file',
149             'for',
150             'function',
151             'generate',
152             'generic',
153             'group',
154             'guarded',
155             'if',
156             'impure',
157             'in',
158             'inertial',
159             'inout',
160             'is',
161             'label',
162             'library',
163             'linkage',
164             'literal',
165             'loop',
166             'map',
167             'new',
168             'next',
169             'not',
170             'note',
171             'null',
172             'of',
173             'on',
174             'open',
175             'or',
176             'others',
177             'out',
178             'package',
179             'port',
180             'postponed',
181             'procedure',
182             'process',
183             'pure',
184             'range',
185             'record',
186             'register',
187             'reject',
188             'report',
189             'return',
190             'select',
191             'severity',
192             'shared',
193             'signal',
194             'subtype',
195             'then',
196             'to',
197             'transport',
198             'type',
199             'unaffected',
200             'units',
201             'until',
202             'use',
203             'variable',
204             'wait',
205             'warning',
206             'when',
207             'while',
208             'with',
209             'xor',
210             );
211 1         236 $self->listAdd('types',
212             'BIT',
213             'BIT_VECTOR',
214             'BOOLEAN',
215             'CHARACTER',
216             'INTEGER',
217             'LINE',
218             'MUX_BIT',
219             'MUX_VECTOR',
220             'NATURAL',
221             'POSITIVE',
222             'QSIM_12STATE',
223             'QSIM_12STATE_VECTOR',
224             'QSIM_STATE',
225             'QSIM_STATE_VECTOR',
226             'QSIM_STRENGTH',
227             'REAL',
228             'REG_BIT',
229             'REG_VECTOR',
230             'SEVERITY_LEVEL',
231             'SIGNED',
232             'STD_LOGIC',
233             'STD_LOGIC_VECTOR',
234             'STD_ULOGIC',
235             'STD_ULOGIC_VECTOR',
236             'STRING',
237             'TEXT',
238             'TIME',
239             'UNSIGNED',
240             'WOR_BIT',
241             'WOR_VECTOR',
242             'bit',
243             'bit_vector',
244             'boolean',
245             'character',
246             'integer',
247             'line',
248             'mux_bit',
249             'mux_vector',
250             'natural',
251             'positive',
252             'qsim_12state',
253             'qsim_12state_vector',
254             'qsim_state',
255             'qsim_state_vector',
256             'qsim_strength',
257             'real',
258             'reg_bit',
259             'reg_vector',
260             'severity_level',
261             'signed',
262             'std_logic',
263             'std_logic_vector',
264             'std_ulogic',
265             'std_ulogic_vector',
266             'string',
267             'text',
268             'time',
269             'unsigned',
270             'wor_bit',
271             'wor_vector',
272             );
273 1         26 $self->contextdata({
274             'attribute' => {
275             callback => \&parseattribute,
276             attribute => 'Attribute',
277             lineending => '#pop',
278             },
279             'comment' => {
280             callback => \&parsecomment,
281             attribute => 'Comment',
282             lineending => '#pop',
283             },
284             'normal' => {
285             callback => \&parsenormal,
286             attribute => 'Normal Text',
287             },
288             'quot in att' => {
289             callback => \&parsequotinatt,
290             attribute => 'Attribute',
291             },
292             'string' => {
293             callback => \&parsestring,
294             attribute => 'Vector',
295             },
296             });
297 1         10 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
298 1         5 $self->basecontext('normal');
299 1         9 $self->keywordscase(0);
300 1         5 $self->initialize;
301 1         5 bless ($self, $class);
302 1         4 return $self;
303             }
304              
305             sub language {
306 0     0 0   return 'VHDL';
307             }
308              
309             sub parseattribute {
310 0     0 0   my ($self, $text) = @_;
311             # attribute => 'Attribute'
312             # char => '"'
313             # context => 'quot in att'
314             # type => 'DetectChar'
315 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'quot in att', 'Attribute')) {
316 0           return 1
317             }
318             # attribute => 'Normal Text'
319             # char => ' '
320             # context => '#pop'
321             # type => 'DetectChar'
322 0 0         if ($self->testDetectChar($text, ' ', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) {
323 0           return 1
324             }
325             # String => ')=<>'
326             # attribute => 'Attribute'
327             # context => '#pop'
328             # type => 'AnyChar'
329 0 0         if ($self->testAnyChar($text, ')=<>', 0, 0, undef, 0, '#pop', 'Attribute')) {
330 0           return 1
331             }
332 0           return 0;
333             };
334              
335             sub parsecomment {
336 0     0 0   my ($self, $text) = @_;
337 0           return 0;
338             };
339              
340             sub parsenormal {
341 0     0 0   my ($self, $text) = @_;
342             # String => 'keywords'
343             # attribute => 'Keyword'
344             # context => '#stay'
345             # type => 'keyword'
346 0 0         if ($self->testKeyword($text, 'keywords', 0, undef, 0, '#stay', 'Keyword')) {
347 0           return 1
348             }
349             # String => 'types'
350             # attribute => 'Data Type'
351             # context => '#stay'
352             # type => 'keyword'
353 0 0         if ($self->testKeyword($text, 'types', 0, undef, 0, '#stay', 'Data Type')) {
354 0           return 1
355             }
356             # attribute => 'Comment'
357             # char => '-'
358             # char1 => '-'
359             # context => 'comment'
360             # type => 'Detect2Chars'
361 0 0         if ($self->testDetect2Chars($text, '-', '-', 0, 0, 0, undef, 0, 'comment', 'Comment')) {
362 0           return 1
363             }
364             # attribute => 'Integer'
365             # context => '#stay'
366             # type => 'Int'
367 0 0         if ($self->testInt($text, 0, undef, 0, '#stay', 'Integer')) {
368 0           return 1
369             }
370             # attribute => 'Bit'
371             # context => '#stay'
372             # type => 'HlCChar'
373 0 0         if ($self->testHlCChar($text, 0, undef, 0, '#stay', 'Bit')) {
374 0           return 1
375             }
376             # attribute => 'Vector'
377             # char => '"'
378             # context => 'string'
379             # type => 'DetectChar'
380 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, 'string', 'Vector')) {
381 0           return 1
382             }
383             # String => '[&><=:+\-*\/|]().,;'
384             # attribute => 'Operator'
385             # context => '#stay'
386             # type => 'AnyChar'
387 0 0         if ($self->testAnyChar($text, '[&><=:+\\-*\\/|]().,;', 0, 0, undef, 0, '#stay', 'Operator')) {
388 0           return 1
389             }
390             # attribute => 'Attribute'
391             # char => '''
392             # context => 'attribute'
393             # type => 'DetectChar'
394 0 0         if ($self->testDetectChar($text, '\'', 0, 0, 0, undef, 0, 'attribute', 'Attribute')) {
395 0           return 1
396             }
397 0           return 0;
398             };
399              
400             sub parsequotinatt {
401 0     0 0   my ($self, $text) = @_;
402             # attribute => 'Attribute'
403             # char => '"'
404             # context => '#pop'
405             # type => 'DetectChar'
406 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'Attribute')) {
407 0           return 1
408             }
409 0           return 0;
410             };
411              
412             sub parsestring {
413 0     0 0   my ($self, $text) = @_;
414             # attribute => 'Vector'
415             # char => '"'
416             # context => '#pop'
417             # type => 'DetectChar'
418 0 0         if ($self->testDetectChar($text, '"', 0, 0, 0, undef, 0, '#pop', 'Vector')) {
419 0           return 1
420             }
421 0           return 0;
422             };
423              
424              
425             1;
426              
427             __END__