mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-06 14:13:23 +00:00
parent
853f4bb3c6
commit
a14dec79eb
57 changed files with 7792 additions and 2 deletions
45
docs/util/RtlilLexer.py
Normal file
45
docs/util/RtlilLexer.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
from pygments.lexer import RegexLexer, bygroups, include
|
||||
from pygments.token import Comment, Keyword, Name, Number, String, Whitespace
|
||||
|
||||
__all__ = ['RtlilLexer']
|
||||
|
||||
class RtlilLexer(RegexLexer):
|
||||
name = 'RTLIL'
|
||||
aliases = ['rtlil']
|
||||
filenames = ['*.il']
|
||||
|
||||
keyword_re = r'(always|assign|attribute|autoidx|case|cell|connect|edge|end|global|high|init|inout|input|low|memory|module|negedge|offset|output|parameter|posedge|process|real|signed|size|switch|sync|update|upto|width|wire)'
|
||||
|
||||
tokens = {
|
||||
'common': [
|
||||
(r'\s+', Whitespace),
|
||||
(r'#.*', Comment.Single),
|
||||
(keyword_re, Keyword),
|
||||
(r'([\\\$][^ \t\r\n]+|\.[0-9]+)', Name.Variable),
|
||||
(r"[0-9]+'[01xzm-]*", Number),
|
||||
(r'-?[0-9]+', Number.Integer),
|
||||
(r'"', String, 'string'),
|
||||
],
|
||||
'root': [
|
||||
(r'cell', Keyword, 'cell_definition'),
|
||||
(r'(module|wire|memory|process)', Keyword, 'definition'),
|
||||
include('common'),
|
||||
],
|
||||
'definition': [
|
||||
(r'([\\\$][^ \t\r\n]+|\.[0-9]+)', Name.Entity, '#pop'),
|
||||
include('common')
|
||||
],
|
||||
'cell_definition': [
|
||||
(r'(\$[^ \t\r\n]+)\b', Name.Function),
|
||||
(r'(\\[^ \t\r\n]+|\.[0-9]+)', Name.Variable),
|
||||
(r'$', Whitespace, '#pop'),
|
||||
include('common'),
|
||||
],
|
||||
'string': [
|
||||
(r'"', String, '#pop'),
|
||||
(r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
|
||||
(r'[^\\"\n]+', String), # all other characters
|
||||
(r'(\\)(\n)', bygroups(String.Escape, Whitespace)), # line continuation
|
||||
(r'\\', String), # stray backslash
|
||||
]
|
||||
}
|
73
docs/util/YoscryptLexer.py
Normal file
73
docs/util/YoscryptLexer.py
Normal file
|
@ -0,0 +1,73 @@
|
|||
from pygments.lexer import RegexLexer, bygroups, include
|
||||
from pygments.token import (Comment, Error, Keyword, Name, Number, Operator,
|
||||
String, Whitespace)
|
||||
|
||||
__all__ = ['YoscryptLexer']
|
||||
|
||||
class YoscryptLexer(RegexLexer):
|
||||
name = 'Yosys Script'
|
||||
aliases = ['yoscrypt']
|
||||
filenames = ['*.ys']
|
||||
|
||||
|
||||
|
||||
tokens = {
|
||||
'common': [
|
||||
(r'\s+', Whitespace),
|
||||
(r'#.*', Comment.Single),
|
||||
(r'"', String, 'string'),
|
||||
(r'(\d+)(\')([bdho]? ?\w+)', bygroups(Number, Operator, Number)),
|
||||
(r'(\d+\.\d+)', Number.Float),
|
||||
(r'(\d+)', Number),
|
||||
(r'(\$[A-Za-z_0-9]*)', Name.Builtin),
|
||||
(r'([A-Za-z_][A-Za-z_0-9\.\\/:-]*)', Name),
|
||||
(r'(\[)(-\S*)(\])', # optional command
|
||||
bygroups(Operator, Name.Attribute, Operator)),
|
||||
(r'([\[<]\w*[\]>])', Name), # arguments
|
||||
(r'[\{\}\|=\[\],]', Operator),
|
||||
(r'.', Comment),
|
||||
],
|
||||
'root': [
|
||||
(r'([A-Za-z_][A-Za-z_0-9]*)', Keyword, 'command'),
|
||||
(r'(-[A-Za-z_][A-Za-z_0-9]*)', Name.Attribute, 'command'), # shortcut for options
|
||||
include('common'),
|
||||
],
|
||||
'command': [
|
||||
(r'(-[A-Za-z_][A-Za-z_0-9]*)', Name.Attribute),
|
||||
(r'\+/[^\s]+', Name.Class),
|
||||
(r'$', Whitespace, '#pop'),
|
||||
(r';(?=\s)', Operator, '#pop'),
|
||||
(r';{2,3}(?=\s)', Name.Class, '#pop'),
|
||||
(r';{1,3}', Error, '#pop'),
|
||||
(r'([ANwismctparn]:)', Keyword.Type, 'pattern'),
|
||||
(r'@', Keyword.Type),
|
||||
(r'%(x|ci|co)e?', Keyword.Type, 'expansion'),
|
||||
(r'%[%nuidDcasmMCR]?', Keyword.Type),
|
||||
(r'/', Operator),
|
||||
include('common'),
|
||||
],
|
||||
'pattern': [
|
||||
(r'<<', Name), # Not an operator
|
||||
(r'(=|<|<=|>|>=)', Operator),
|
||||
(r':', Keyword.Type),
|
||||
(r'$', Whitespace, '#pop:2'),
|
||||
(r'\s+', Whitespace, '#pop'),
|
||||
include('common'),
|
||||
],
|
||||
'expansion': [
|
||||
(r'$', Name.Class, '#pop:2'),
|
||||
(r';(?=\s)', Operator, '#pop:2'),
|
||||
(r';{2,3}(?=\s)', Name.Class, '#pop:2'),
|
||||
(r'\s', Whitespace, '#pop'),
|
||||
(r'[0-9\*]{1,3}', Number),
|
||||
(r'[:+-,\[\]]', Operator),
|
||||
include('common'),
|
||||
],
|
||||
'string': [
|
||||
(r'"', String, '#pop'),
|
||||
(r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})', String.Escape),
|
||||
(r'[^\\"\n]+', String), # all other characters
|
||||
(r'(\\)(\n)', bygroups(String.Escape, Whitespace)), # line continuation
|
||||
(r'\\', String), # stray backslash
|
||||
]
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue