123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """
- pygments.lexers.rego
- ~~~~~~~~~~~~~~~~~~~~
- Lexers for the Rego policy languages.
- :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
- :license: BSD, see LICENSE for details.
- """
- from pygments.lexer import RegexLexer, words
- from pygments.token import Comment, Operator, Keyword, Name, String, Number, Punctuation, Whitespace
- class RegoLexer(RegexLexer):
- """
- For Rego source.
- """
- name = 'Rego'
- url = 'https://www.openpolicyagent.org/docs/latest/policy-language/'
- filenames = ['*.rego']
- aliases = ['rego']
- mimetypes = ['text/x-rego']
- version_added = '2.19'
- reserved_words = (
- 'as', 'contains', 'data', 'default', 'else', 'every', 'false',
- 'if', 'in', 'import', 'package', 'not', 'null',
- 'some', 'true', 'with'
- )
- builtins = (
- # https://www.openpolicyagent.org/docs/latest/philosophy/#the-opa-document-model
- 'data', # Global variable for accessing base and virtual documents
- 'input', # Represents synchronously pushed base documents
- )
- tokens = {
- 'root': [
- (r'\n', Whitespace),
- (r'\s+', Whitespace),
- (r'#.*?$', Comment.Single),
- (words(reserved_words, suffix=r'\b'), Keyword),
- (words(builtins, suffix=r'\b'), Name.Builtin),
- (r'[a-zA-Z_][a-zA-Z0-9_]*', Name),
- (r'"(\\\\|\\"|[^"])*"', String.Double),
- (r'`[^`]*`', String.Backtick),
- (r'-?\d+(\.\d+)?', Number),
- (r'(==|!=|<=|>=|:=)', Operator), # Compound operators
- (r'[=<>+\-*/%&|]', Operator), # Single-character operators
- (r'[\[\]{}(),.:;]', Punctuation),
- ]
- }
- __all__ = ['RegoLexer']
|