|
|
|
@ -0,0 +1,51 @@ |
|
|
|
import os |
|
|
|
import sys |
|
|
|
sys.path.append(os.path.abspath("../Parser/")) |
|
|
|
|
|
|
|
from pygments.lexer import RegexLexer, bygroups, include, words |
|
|
|
from pygments.token import (Comment, Generic, Keyword, Name, Operator, |
|
|
|
Punctuation, Text) |
|
|
|
|
|
|
|
from asdl import builtin_types |
|
|
|
from sphinx.highlighting import lexers |
|
|
|
|
|
|
|
class ASDLLexer(RegexLexer): |
|
|
|
name = "ASDL" |
|
|
|
aliases = ["asdl"] |
|
|
|
filenames = ["*.asdl"] |
|
|
|
_name = r"([^\W\d]\w*)" |
|
|
|
_text_ws = r"(\s*)" |
|
|
|
|
|
|
|
tokens = { |
|
|
|
"ws": [ |
|
|
|
(r"\n", Text), |
|
|
|
(r"\s+", Text), |
|
|
|
(r"--.*?$", Comment.Singleline), |
|
|
|
], |
|
|
|
"root": [ |
|
|
|
include("ws"), |
|
|
|
( |
|
|
|
r"(module)" + _text_ws + _name, |
|
|
|
bygroups(Keyword, Text, Name.Tag), |
|
|
|
), |
|
|
|
( |
|
|
|
r"(\w+)(\*\s|\?\s|\s)(\w+)", |
|
|
|
bygroups(Name.Builtin.Pseudo, Operator, Name), |
|
|
|
), |
|
|
|
(words(builtin_types), Name.Builtin), |
|
|
|
(r"attributes", Name.Builtin), |
|
|
|
( |
|
|
|
_name + _text_ws + "(=)", |
|
|
|
bygroups(Name, Text, Operator), |
|
|
|
), |
|
|
|
(_name, Name.Class), |
|
|
|
(r"\|", Operator), |
|
|
|
(r"{|}|\(|\)", Punctuation), |
|
|
|
(r".", Text), |
|
|
|
], |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def setup(app): |
|
|
|
lexers["asdl"] = ASDLLexer() |
|
|
|
return {'version': '1.0', 'parallel_read_safe': True} |