You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
"""
 | 
						|
    pygments.lexers.jmespath
 | 
						|
    ~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
 | 
						|
    Lexers for the JMESPath language
 | 
						|
 | 
						|
    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
 | 
						|
    :license: BSD, see LICENSE for details.
 | 
						|
"""
 | 
						|
 | 
						|
from pygments.lexer import RegexLexer, bygroups, include
 | 
						|
from pygments.token import String, Punctuation, Whitespace, Name, Operator, \
 | 
						|
    Number, Literal, Keyword
 | 
						|
 | 
						|
__all__ = ['JMESPathLexer']
 | 
						|
 | 
						|
 | 
						|
class JMESPathLexer(RegexLexer):
 | 
						|
    """
 | 
						|
    For JMESPath queries.
 | 
						|
    """
 | 
						|
    name = 'JMESPath'
 | 
						|
    url = 'https://jmespath.org'
 | 
						|
    filenames = ['*.jp']
 | 
						|
    aliases = ['jmespath', 'jp']
 | 
						|
    version_added = ''
 | 
						|
 | 
						|
    tokens = {
 | 
						|
        'string': [
 | 
						|
            (r"'(\\(.|\n)|[^'\\])*'", String),
 | 
						|
        ],
 | 
						|
        'punctuation': [
 | 
						|
            (r'(\[\?|[\.\*\[\],:\(\)\{\}\|])', Punctuation),
 | 
						|
        ],
 | 
						|
        'ws': [
 | 
						|
            (r" |\t|\n|\r", Whitespace)
 | 
						|
        ],
 | 
						|
        "dq-identifier": [
 | 
						|
            (r'[^\\"]+', Name.Variable),
 | 
						|
            (r'\\"', Name.Variable),
 | 
						|
            (r'.', Punctuation, '#pop'),
 | 
						|
        ],
 | 
						|
        'identifier': [
 | 
						|
            (r'(&)?(")', bygroups(Name.Variable, Punctuation), 'dq-identifier'),
 | 
						|
            (r'(")?(&?[A-Za-z][A-Za-z0-9_-]*)(")?', bygroups(Punctuation, Name.Variable, Punctuation)),
 | 
						|
        ],
 | 
						|
        'root': [
 | 
						|
            include('ws'),
 | 
						|
            include('string'),
 | 
						|
            (r'(==|!=|<=|>=|<|>|&&|\|\||!)', Operator),
 | 
						|
            include('punctuation'),
 | 
						|
            (r'@', Name.Variable.Global),
 | 
						|
            (r'(&?[A-Za-z][A-Za-z0-9_]*)(\()', bygroups(Name.Function, Punctuation)),
 | 
						|
            (r'(&)(\()', bygroups(Name.Variable, Punctuation)),
 | 
						|
            include('identifier'),
 | 
						|
            (r'-?\d+', Number),
 | 
						|
            (r'`', Literal, 'literal'),
 | 
						|
        ],
 | 
						|
        'literal': [
 | 
						|
            include('ws'),
 | 
						|
            include('string'),
 | 
						|
            include('punctuation'),
 | 
						|
            (r'(false|true|null)\b', Keyword.Constant),
 | 
						|
            include('identifier'),
 | 
						|
            (r'-?\d+\.?\d*([eE][-+]\d+)?', Number),
 | 
						|
            (r'\\`', Literal),
 | 
						|
            (r'`', Literal, '#pop'),
 | 
						|
        ]
 | 
						|
    }
 |