Server IP : 85.214.239.14 / Your IP : 18.118.28.160 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/pygments/lexers/ |
Upload File : |
""" pygments.lexers.yang ~~~~~~~~~~~~~~~~~~~~ Lexer for the YANG 1.1 modeling language. See :rfc:`7950`. :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ from pygments.lexer import RegexLexer, bygroups, words from pygments.token import Text, Token, Name, String, Comment, Number __all__ = ['YangLexer'] class YangLexer(RegexLexer): """ Lexer for YANG, based on RFC7950. .. versionadded:: 2.7 """ name = 'YANG' url = 'https://tools.ietf.org/html/rfc7950/' aliases = ['yang'] filenames = ['*.yang'] mimetypes = ['application/yang'] #Keywords from RFC7950 ; oriented at BNF style TOP_STMTS_KEYWORDS = ("module", "submodule") MODULE_HEADER_STMT_KEYWORDS = ("belongs-to", "namespace", "prefix", "yang-version") META_STMT_KEYWORDS = ("contact", "description", "organization", "reference", "revision") LINKAGE_STMTS_KEYWORDS = ("import", "include", "revision-date") BODY_STMT_KEYWORDS = ("action", "argument", "augment", "deviation", "extension", "feature", "grouping", "identity", "if-feature", "input", "notification", "output", "rpc", "typedef") DATA_DEF_STMT_KEYWORDS = ("anydata", "anyxml", "case", "choice", "config", "container", "deviate", "leaf", "leaf-list", "list", "must", "presence", "refine", "uses", "when") TYPE_STMT_KEYWORDS = ("base", "bit", "default", "enum", "error-app-tag", "error-message", "fraction-digits", "length", "max-elements", "min-elements", "modifier", "ordered-by", "path", "pattern", "position", "range", "require-instance", "status", "type", "units", "value", "yin-element") LIST_STMT_KEYWORDS = ("key", "mandatory", "unique") #RFC7950 other keywords CONSTANTS_KEYWORDS = ("add", "current", "delete", "deprecated", "false", "invert-match", "max", "min", "not-supported", "obsolete", "replace", "true", "unbounded", "user") #RFC7950 Built-In Types TYPES = ("binary", "bits", "boolean", "decimal64", "empty", "enumeration", "identityref", "instance-identifier", "int16", "int32", "int64", "int8", "leafref", "string", "uint16", "uint32", "uint64", "uint8", "union") suffix_re_pattern = r'(?=[^\w\-:])' tokens = { 'comments': [ (r'[^*/]', Comment), (r'/\*', Comment, '#push'), (r'\*/', Comment, '#pop'), (r'[*/]', Comment), ], "root": [ (r'\s+', Text.Whitespace), (r'[{};]+', Token.Punctuation), (r'(?<![\-\w])(and|or|not|\+|\.)(?![\-\w])', Token.Operator), (r'"(?:\\"|[^"])*?"', String.Double), (r"'(?:\\'|[^'])*?'", String.Single), (r'/\*', Comment, 'comments'), (r'//.*?$', Comment), #match BNF stmt for `node-identifier` with [ prefix ":"] (r'(?:^|(?<=[\s{};]))([\w.-]+)(:)([\w.-]+)(?=[\s{};])', bygroups(Name.Namespace, Token.Punctuation, Name.Variable)), #match BNF stmt `date-arg-str` (r'([0-9]{4}\-[0-9]{2}\-[0-9]{2})(?=[\s{};])', Name.Label), (r'([0-9]+\.[0-9]+)(?=[\s{};])', Number.Float), (r'([0-9]+)(?=[\s{};])', Number.Integer), (words(TOP_STMTS_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(MODULE_HEADER_STMT_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(META_STMT_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(LINKAGE_STMTS_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(BODY_STMT_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(DATA_DEF_STMT_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(TYPE_STMT_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(LIST_STMT_KEYWORDS, suffix=suffix_re_pattern), Token.Keyword), (words(TYPES, suffix=suffix_re_pattern), Name.Class), (words(CONSTANTS_KEYWORDS, suffix=suffix_re_pattern), Name.Class), (r'[^;{}\s\'"]+', Name.Variable), ] }