mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import sys
 | |
| from pathlib import Path
 | |
| 
 | |
| CPYTHON_ROOT = Path(__file__).resolve().parent.parent.parent.parent
 | |
| sys.path.append(str(CPYTHON_ROOT / "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}
 | 
