mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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, 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}
 |