17db96d56Sopenharmony_ciimport os 27db96d56Sopenharmony_ciimport sys 37db96d56Sopenharmony_cifrom pathlib import Path 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciCPYTHON_ROOT = Path(__file__).resolve().parent.parent.parent.parent 67db96d56Sopenharmony_cisys.path.append(str(CPYTHON_ROOT / "Parser")) 77db96d56Sopenharmony_ci 87db96d56Sopenharmony_cifrom pygments.lexer import RegexLexer, bygroups, include, words 97db96d56Sopenharmony_cifrom pygments.token import (Comment, Generic, Keyword, Name, Operator, 107db96d56Sopenharmony_ci Punctuation, Text) 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_cifrom asdl import builtin_types 137db96d56Sopenharmony_cifrom sphinx.highlighting import lexers 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ciclass ASDLLexer(RegexLexer): 167db96d56Sopenharmony_ci name = "ASDL" 177db96d56Sopenharmony_ci aliases = ["asdl"] 187db96d56Sopenharmony_ci filenames = ["*.asdl"] 197db96d56Sopenharmony_ci _name = r"([^\W\d]\w*)" 207db96d56Sopenharmony_ci _text_ws = r"(\s*)" 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci tokens = { 237db96d56Sopenharmony_ci "ws": [ 247db96d56Sopenharmony_ci (r"\n", Text), 257db96d56Sopenharmony_ci (r"\s+", Text), 267db96d56Sopenharmony_ci (r"--.*?$", Comment.Singleline), 277db96d56Sopenharmony_ci ], 287db96d56Sopenharmony_ci "root": [ 297db96d56Sopenharmony_ci include("ws"), 307db96d56Sopenharmony_ci ( 317db96d56Sopenharmony_ci r"(module)" + _text_ws + _name, 327db96d56Sopenharmony_ci bygroups(Keyword, Text, Name.Tag), 337db96d56Sopenharmony_ci ), 347db96d56Sopenharmony_ci ( 357db96d56Sopenharmony_ci r"(\w+)(\*\s|\?\s|\s)(\w+)", 367db96d56Sopenharmony_ci bygroups(Name.Builtin.Pseudo, Operator, Name), 377db96d56Sopenharmony_ci ), 387db96d56Sopenharmony_ci (words(builtin_types), Name.Builtin), 397db96d56Sopenharmony_ci (r"attributes", Name.Builtin), 407db96d56Sopenharmony_ci ( 417db96d56Sopenharmony_ci _name + _text_ws + "(=)", 427db96d56Sopenharmony_ci bygroups(Name, Text, Operator), 437db96d56Sopenharmony_ci ), 447db96d56Sopenharmony_ci (_name, Name.Class), 457db96d56Sopenharmony_ci (r"\|", Operator), 467db96d56Sopenharmony_ci (r"{|}|\(|\)", Punctuation), 477db96d56Sopenharmony_ci (r".", Text), 487db96d56Sopenharmony_ci ], 497db96d56Sopenharmony_ci } 507db96d56Sopenharmony_ci 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_cidef setup(app): 537db96d56Sopenharmony_ci lexers["asdl"] = ASDLLexer() 547db96d56Sopenharmony_ci return {'version': '1.0', 'parallel_read_safe': True} 55