mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
	
	
		
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 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} |