106 'byte', 'shortint', 'int', 'longint', 'integer', 'time', |
106 'byte', 'shortint', 'int', 'longint', 'integer', 'time', |
107 'bit', 'logic', 'reg', 'supply0', 'supply1', 'tri', 'triand', |
107 'bit', 'logic', 'reg', 'supply0', 'supply1', 'tri', 'triand', |
108 'trior', 'tri0', 'tri1', 'trireg', 'uwire', 'wire', 'wand', 'wo' |
108 'trior', 'tri0', 'tri1', 'trireg', 'uwire', 'wire', 'wand', 'wo' |
109 'shortreal', 'real', 'realtime'), suffix=r'\b'), |
109 'shortreal', 'real', 'realtime'), suffix=r'\b'), |
110 Keyword.Type), |
110 Keyword.Type), |
111 ('[a-zA-Z_]\w*:(?!:)', Name.Label), |
111 (r'[a-zA-Z_]\w*:(?!:)', Name.Label), |
112 ('[a-zA-Z_]\w*', Name), |
112 (r'\$?[a-zA-Z_]\w*', Name), |
113 ], |
113 ], |
114 'string': [ |
114 'string': [ |
115 (r'"', String, '#pop'), |
115 (r'"', String, '#pop'), |
116 (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape), |
116 (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape), |
117 (r'[^\\"\n]+', String), # all other characters |
117 (r'[^\\"\n]+', String), # all other characters |
248 'byte', 'shortint', 'int', 'longint', 'integer', 'time', |
248 'byte', 'shortint', 'int', 'longint', 'integer', 'time', |
249 'bit', 'logic', 'reg', 'supply0', 'supply1', 'tri', 'triand', |
249 'bit', 'logic', 'reg', 'supply0', 'supply1', 'tri', 'triand', |
250 'trior', 'tri0', 'tri1', 'trireg', 'uwire', 'wire', 'wand', 'wo' |
250 'trior', 'tri0', 'tri1', 'trireg', 'uwire', 'wire', 'wand', 'wo' |
251 'shortreal', 'real', 'realtime'), suffix=r'\b'), |
251 'shortreal', 'real', 'realtime'), suffix=r'\b'), |
252 Keyword.Type), |
252 Keyword.Type), |
253 ('[a-zA-Z_]\w*:(?!:)', Name.Label), |
253 (r'[a-zA-Z_]\w*:(?!:)', Name.Label), |
254 ('[a-zA-Z_]\w*', Name), |
254 (r'\$?[a-zA-Z_]\w*', Name), |
255 ], |
255 ], |
256 'classname': [ |
256 'classname': [ |
257 (r'[a-zA-Z_]\w*', Name.Class, '#pop'), |
257 (r'[a-zA-Z_]\w*', Name.Class, '#pop'), |
258 ], |
258 ], |
259 'string': [ |
259 'string': [ |
306 (r'--.*?$', Comment.Single), |
306 (r'--.*?$', Comment.Single), |
307 (r"'(U|X|0|1|Z|W|L|H|-)'", String.Char), |
307 (r"'(U|X|0|1|Z|W|L|H|-)'", String.Char), |
308 (r'[~!%^&*+=|?:<>/-]', Operator), |
308 (r'[~!%^&*+=|?:<>/-]', Operator), |
309 (r"'[a-z_]\w*", Name.Attribute), |
309 (r"'[a-z_]\w*", Name.Attribute), |
310 (r'[()\[\],.;\']', Punctuation), |
310 (r'[()\[\],.;\']', Punctuation), |
311 (r'"[^\n\\]*"', String), |
311 (r'"[^\n\\"]*"', String), |
312 |
312 |
313 (r'(library)(\s+)([a-z_]\w*)', |
313 (r'(library)(\s+)([a-z_]\w*)', |
314 bygroups(Keyword, Text, Name.Namespace)), |
314 bygroups(Keyword, Text, Name.Namespace)), |
315 (r'(use)(\s+)(entity)', bygroups(Keyword, Text, Keyword)), |
315 (r'(use)(\s+)(entity)', bygroups(Keyword, Text, Keyword)), |
|
316 (r'(use)(\s+)([a-z_][\w.]*\.)(all)', |
|
317 bygroups(Keyword, Text, Name.Namespace, Keyword)), |
316 (r'(use)(\s+)([a-z_][\w.]*)', |
318 (r'(use)(\s+)([a-z_][\w.]*)', |
317 bygroups(Keyword, Text, Name.Namespace)), |
319 bygroups(Keyword, Text, Name.Namespace)), |
|
320 (r'(std|ieee)(\.[a-z_]\w*)', |
|
321 bygroups(Name.Namespace, Name.Namespace)), |
|
322 (words(('std', 'ieee', 'work'), suffix=r'\b'), |
|
323 Name.Namespace), |
318 (r'(entity|component)(\s+)([a-z_]\w*)', |
324 (r'(entity|component)(\s+)([a-z_]\w*)', |
319 bygroups(Keyword, Text, Name.Class)), |
325 bygroups(Keyword, Text, Name.Class)), |
320 (r'(architecture|configuration)(\s+)([a-z_]\w*)(\s+)' |
326 (r'(architecture|configuration)(\s+)([a-z_]\w*)(\s+)' |
321 r'(of)(\s+)([a-z_]\w*)(\s+)(is)', |
327 r'(of)(\s+)([a-z_]\w*)(\s+)(is)', |
322 bygroups(Keyword, Text, Name.Class, Text, Keyword, Text, |
328 bygroups(Keyword, Text, Name.Class, Text, Keyword, Text, |
323 Name.Class, Text, Keyword)), |
329 Name.Class, Text, Keyword)), |
324 |
330 (r'([a-z_]\w*)(:)(\s+)(process|for)', |
|
331 bygroups(Name.Class, Operator, Text, Keyword)), |
325 (r'(end)(\s+)', bygroups(using(this), Text), 'endblock'), |
332 (r'(end)(\s+)', bygroups(using(this), Text), 'endblock'), |
326 |
333 |
327 include('types'), |
334 include('types'), |
328 include('keywords'), |
335 include('keywords'), |
329 include('numbers'), |
336 include('numbers'), |
339 'types': [ |
346 'types': [ |
340 (words(( |
347 (words(( |
341 'boolean', 'bit', 'character', 'severity_level', 'integer', 'time', |
348 'boolean', 'bit', 'character', 'severity_level', 'integer', 'time', |
342 'delay_length', 'natural', 'positive', 'string', 'bit_vector', |
349 'delay_length', 'natural', 'positive', 'string', 'bit_vector', |
343 'file_open_kind', 'file_open_status', 'std_ulogic', 'std_ulogic_vector', |
350 'file_open_kind', 'file_open_status', 'std_ulogic', 'std_ulogic_vector', |
344 'std_logic', 'std_logic_vector'), suffix=r'\b'), |
351 'std_logic', 'std_logic_vector', 'signed', 'unsigned'), suffix=r'\b'), |
345 Keyword.Type), |
352 Keyword.Type), |
346 ], |
353 ], |
347 'keywords': [ |
354 'keywords': [ |
348 (words(( |
355 (words(( |
349 'abs', 'access', 'after', 'alias', 'all', 'and', |
356 'abs', 'access', 'after', 'alias', 'all', 'and', |
355 'inertial', 'inout', 'is', 'label', 'library', 'linkage', |
362 'inertial', 'inout', 'is', 'label', 'library', 'linkage', |
356 'literal', 'loop', 'map', 'mod', 'nand', 'new', |
363 'literal', 'loop', 'map', 'mod', 'nand', 'new', |
357 'next', 'nor', 'not', 'null', 'of', 'on', |
364 'next', 'nor', 'not', 'null', 'of', 'on', |
358 'open', 'or', 'others', 'out', 'package', 'port', |
365 'open', 'or', 'others', 'out', 'package', 'port', |
359 'postponed', 'procedure', 'process', 'pure', 'range', 'record', |
366 'postponed', 'procedure', 'process', 'pure', 'range', 'record', |
360 'register', 'reject', 'return', 'rol', 'ror', 'select', |
367 'register', 'reject', 'rem', 'return', 'rol', 'ror', 'select', |
361 'severity', 'signal', 'shared', 'sla', 'sli', 'sra', |
368 'severity', 'signal', 'shared', 'sla', 'sll', 'sra', |
362 'srl', 'subtype', 'then', 'to', 'transport', 'type', |
369 'srl', 'subtype', 'then', 'to', 'transport', 'type', |
363 'units', 'until', 'use', 'variable', 'wait', 'when', |
370 'units', 'until', 'use', 'variable', 'wait', 'when', |
364 'while', 'with', 'xnor', 'xor'), suffix=r'\b'), |
371 'while', 'with', 'xnor', 'xor'), suffix=r'\b'), |
365 Keyword), |
372 Keyword), |
366 ], |
373 ], |