diff options
Diffstat (limited to 'pygments/lexers/archetype.py')
-rw-r--r-- | pygments/lexers/archetype.py | 318 |
1 files changed, 0 insertions, 318 deletions
diff --git a/pygments/lexers/archetype.py b/pygments/lexers/archetype.py deleted file mode 100644 index 68ec5c04..00000000 --- a/pygments/lexers/archetype.py +++ /dev/null @@ -1,318 +0,0 @@ -# -*- coding: utf-8 -*- -""" - pygments.lexers.archetype - ~~~~~~~~~~~~~~~~~~~~~~~~~ - - Lexer for Archetype-related syntaxes, including: - - - ODIN syntax <https://github.com/openEHR/odin> - - ADL syntax <http://www.openehr.org/releases/trunk/architecture/am/adl2.pdf> - - cADL sub-syntax of ADL - - For uses of this syntax, see the openEHR archetypes <http://www.openEHR.org/ckm> - - Contributed by Thomas Beale <https://github.com/wolandscat>, - <https://bitbucket.org/thomas_beale>. - - :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -from pygments.lexer import RegexLexer, include, bygroups, using, default -from pygments.token import Text, Comment, Name, Literal, Number, String, \ - Punctuation, Keyword, Operator, Generic - -__all__ = ['OdinLexer', 'CadlLexer', 'AdlLexer'] - - -class AtomsLexer(RegexLexer): - """ - Lexer for Values used in ADL and ODIN. - - .. versionadded:: 2.1 - """ - - tokens = { - # ----- pseudo-states for inclusion ----- - 'whitespace': [ - (r'\n', Text), - (r'\s+', Text), - (r'[ \t]*--.*$', Comment), - ], - 'archetype_id': [ - (r'[ \t]*([a-zA-Z]\w+(\.[a-zA-Z]\w+)*::)?[a-zA-Z]\w+(-[a-zA-Z]\w+){2}' - r'\.\w+[\w-]*\.v\d+(\.\d+){,2}((-[a-z]+)(\.\d+)?)?', Name.Decorator), - ], - 'date_constraints': [ - # ISO 8601-based date/time constraints - (r'[Xx?YyMmDdHhSs\d]{2,4}([:-][Xx?YyMmDdHhSs\d]{2}){2}', Literal.Date), - # ISO 8601-based duration constraints + optional trailing slash - (r'(P[YyMmWwDd]+(T[HhMmSs]+)?|PT[HhMmSs]+)/?', Literal.Date), - ], - 'ordered_values': [ - # ISO 8601 date with optional 'T' ligature - (r'\d{4}-\d{2}-\d{2}T?', Literal.Date), - # ISO 8601 time - (r'\d{2}:\d{2}:\d{2}(\.\d+)?([+-]\d{4}|Z)?', Literal.Date), - # ISO 8601 duration - (r'P((\d*(\.\d+)?[YyMmWwDd]){1,3}(T(\d*(\.\d+)?[HhMmSs]){,3})?|' - r'T(\d*(\.\d+)?[HhMmSs]){,3})', Literal.Date), - (r'[+-]?(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+', Number.Float), - (r'[+-]?(\d+)*\.\d+%?', Number.Float), - (r'0x[0-9a-fA-F]+', Number.Hex), - (r'[+-]?\d+%?', Number.Integer), - ], - 'values': [ - include('ordered_values'), - (r'([Tt]rue|[Ff]alse)', Literal), - (r'"', String, 'string'), - (r"'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'", String.Char), - (r'[a-z][a-z0-9+.-]*:', Literal, 'uri'), - # term code - (r'(\[)(\w[\w-]*(?:\([^)\n]+\))?)(::)(\w[\w-]*)(\])', - bygroups(Punctuation, Name.Decorator, Punctuation, Name.Decorator, - Punctuation)), - (r'\|', Punctuation, 'interval'), - # list continuation - (r'\.\.\.', Punctuation), - ], - 'constraint_values': [ - (r'(\[)(\w[\w-]*(?:\([^)\n]+\))?)(::)', - bygroups(Punctuation, Name.Decorator, Punctuation), 'adl14_code_constraint'), - # ADL 1.4 ordinal constraint - (r'(\d*)(\|)(\[\w[\w-]*::\w[\w-]*\])((?:[,;])?)', - bygroups(Number, Punctuation, Name.Decorator, Punctuation)), - include('date_constraints'), - include('values'), - ], - - # ----- real states ----- - 'string': [ - ('"', String, '#pop'), - (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|' - r'u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})', String.Escape), - # all other characters - (r'[^\\"]+', String), - # stray backslash - (r'\\', String), - ], - 'uri': [ - # effective URI terminators - (r'[,>\s]', Punctuation, '#pop'), - (r'[^>\s,]+', Literal), - ], - 'interval': [ - (r'\|', Punctuation, '#pop'), - include('ordered_values'), - (r'\.\.', Punctuation), - (r'[<>=] *', Punctuation), - # handle +/- - (r'\+/-', Punctuation), - (r'\s+', Text), - ], - 'any_code': [ - include('archetype_id'), - # if it is a code - (r'[a-z_]\w*[0-9.]+(@[^\]]+)?', Name.Decorator), - # if it is tuple with attribute names - (r'[a-z_]\w*', Name.Class), - # if it is an integer, i.e. Xpath child index - (r'[0-9]+', Text), - (r'\|', Punctuation, 'code_rubric'), - (r'\]', Punctuation, '#pop'), - # handle use_archetype statement - (r'\s*,\s*', Punctuation), - ], - 'code_rubric': [ - (r'\|', Punctuation, '#pop'), - (r'[^|]+', String), - ], - 'adl14_code_constraint': [ - (r'\]', Punctuation, '#pop'), - (r'\|', Punctuation, 'code_rubric'), - (r'(\w[\w-]*)([;,]?)', bygroups(Name.Decorator, Punctuation)), - include('whitespace'), - ], - } - - -class OdinLexer(AtomsLexer): - """ - Lexer for ODIN syntax. - - .. versionadded:: 2.1 - """ - name = 'ODIN' - aliases = ['odin'] - filenames = ['*.odin'] - mimetypes = ['text/odin'] - - tokens = { - 'path': [ - (r'>', Punctuation, '#pop'), - # attribute name - (r'[a-z_]\w*', Name.Class), - (r'/', Punctuation), - (r'\[', Punctuation, 'key'), - (r'\s*,\s*', Punctuation, '#pop'), - (r'\s+', Text, '#pop'), - ], - 'key': [ - include('values'), - (r'\]', Punctuation, '#pop'), - ], - 'type_cast': [ - (r'\)', Punctuation, '#pop'), - (r'[^)]+', Name.Class), - ], - 'root': [ - include('whitespace'), - (r'([Tt]rue|[Ff]alse)', Literal), - include('values'), - # x-ref path - (r'/', Punctuation, 'path'), - # x-ref path starting with key - (r'\[', Punctuation, 'key'), - # attribute name - (r'[a-z_]\w*', Name.Class), - (r'=', Operator), - (r'\(', Punctuation, 'type_cast'), - (r',', Punctuation), - (r'<', Punctuation), - (r'>', Punctuation), - (r';', Punctuation), - ], - } - - -class CadlLexer(AtomsLexer): - """ - Lexer for cADL syntax. - - .. versionadded:: 2.1 - """ - name = 'cADL' - aliases = ['cadl'] - filenames = ['*.cadl'] - - tokens = { - 'path': [ - # attribute name - (r'[a-z_]\w*', Name.Class), - (r'/', Punctuation), - (r'\[', Punctuation, 'any_code'), - (r'\s+', Punctuation, '#pop'), - ], - 'root': [ - include('whitespace'), - (r'(cardinality|existence|occurrences|group|include|exclude|' - r'allow_archetype|use_archetype|use_node)\W', Keyword.Type), - (r'(and|or|not|there_exists|xor|implies|for_all)\W', Keyword.Type), - (r'(after|before|closed)\W', Keyword.Type), - (r'(not)\W', Operator), - (r'(matches|is_in)\W', Operator), - # is_in / not is_in char - (u'(\u2208|\u2209)', Operator), - # there_exists / not there_exists / for_all / and / or - (u'(\u2203|\u2204|\u2200|\u2227|\u2228|\u22BB|\223C)', - Operator), - # regex in slot or as string constraint - (r'(\{)(\s*/[^}]+/\s*)(\})', - bygroups(Punctuation, String.Regex, Punctuation)), - # regex in slot or as string constraint - (r'(\{)(\s*\^[^}]+\^\s*)(\})', - bygroups(Punctuation, String.Regex, Punctuation)), - (r'/', Punctuation, 'path'), - # for cardinality etc - (r'(\{)((?:\d+\.\.)?(?:\d+|\*))' - r'((?:\s*;\s*(?:ordered|unordered|unique)){,2})(\})', - bygroups(Punctuation, Number, Number, Punctuation)), - # [{ is start of a tuple value - (r'\[\{', Punctuation), - (r'\}\]', Punctuation), - (r'\{', Punctuation), - (r'\}', Punctuation), - include('constraint_values'), - # type name - (r'[A-Z]\w+(<[A-Z]\w+([A-Za-z_<>]*)>)?', Name.Class), - # attribute name - (r'[a-z_]\w*', Name.Class), - (r'\[', Punctuation, 'any_code'), - (r'(~|//|\\\\|\+|-|/|\*|\^|!=|=|<=|>=|<|>]?)', Operator), - (r'\(', Punctuation), - (r'\)', Punctuation), - # for lists of values - (r',', Punctuation), - (r'"', String, 'string'), - # for assumed value - (r';', Punctuation), - ], - } - - -class AdlLexer(AtomsLexer): - """ - Lexer for ADL syntax. - - .. versionadded:: 2.1 - """ - - name = 'ADL' - aliases = ['adl'] - filenames = ['*.adl', '*.adls', '*.adlf', '*.adlx'] - - tokens = { - 'whitespace': [ - # blank line ends - (r'\s*\n', Text), - # comment-only line - (r'^[ \t]*--.*$', Comment), - ], - 'odin_section': [ - # repeating the following two rules from the root state enable multi-line - # strings that start in the first column to be dealt with - (r'^(language|description|ontology|terminology|annotations|' - r'component_terminologies|revision_history)[ \t]*\n', Generic.Heading), - (r'^(definition)[ \t]*\n', Generic.Heading, 'cadl_section'), - (r'^([ \t]*|[ \t]+.*)\n', using(OdinLexer)), - (r'^([^"]*")(>[ \t]*\n)', bygroups(String, Punctuation)), - # template overlay delimiter - (r'^----------*\n', Text, '#pop'), - (r'^.*\n', String), - default('#pop'), - ], - 'cadl_section': [ - (r'^([ \t]*|[ \t]+.*)\n', using(CadlLexer)), - default('#pop'), - ], - 'rules_section': [ - (r'^[ \t]+.*\n', using(CadlLexer)), - default('#pop'), - ], - 'metadata': [ - (r'\)', Punctuation, '#pop'), - (r';', Punctuation), - (r'([Tt]rue|[Ff]alse)', Literal), - # numbers and version ids - (r'\d+(\.\d+)*', Literal), - # Guids - (r'(\d|[a-fA-F])+(-(\d|[a-fA-F])+){3,}', Literal), - (r'\w+', Name.Class), - (r'"', String, 'string'), - (r'=', Operator), - (r'[ \t]+', Text), - default('#pop'), - ], - 'root': [ - (r'^(archetype|template_overlay|operational_template|template|' - r'speciali[sz]e)', Generic.Heading), - (r'^(language|description|ontology|terminology|annotations|' - r'component_terminologies|revision_history)[ \t]*\n', - Generic.Heading, 'odin_section'), - (r'^(definition)[ \t]*\n', Generic.Heading, 'cadl_section'), - (r'^(rules)[ \t]*\n', Generic.Heading, 'rules_section'), - include('archetype_id'), - (r'[ \t]*\(', Punctuation, 'metadata'), - include('whitespace'), - ], - } |