Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
modula2.py1580 linesDownload Raw Back to lexers
1"""2    pygments.lexers.modula23    ~~~~~~~~~~~~~~~~~~~~~~~4 5    Multi-Dialect Lexer for Modula-2.6 7    :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.8    :license: BSD, see LICENSE for details.9"""10 11import re12 13from pygments.lexer import RegexLexer, include14from pygments.util import get_bool_opt, get_list_opt15from pygments.token import Text, Comment, Operator, Keyword, Name, \16    String, Number, Punctuation, Error17 18__all__ = ['Modula2Lexer']19 20 21# Multi-Dialect Modula-2 Lexer22class Modula2Lexer(RegexLexer):23    """24    For Modula-2 source code.25 26    The Modula-2 lexer supports several dialects.  By default, it operates in27    fallback mode, recognising the *combined* literals, punctuation symbols28    and operators of all supported dialects, and the *combined* reserved words29    and builtins of PIM Modula-2, ISO Modula-2 and Modula-2 R10, while not30    differentiating between library defined identifiers.31 32    To select a specific dialect, a dialect option may be passed33    or a dialect tag may be embedded into a source file.34 35    Dialect Options:36 37    `m2pim`38        Select PIM Modula-2 dialect.39    `m2iso`40        Select ISO Modula-2 dialect.41    `m2r10`42        Select Modula-2 R10 dialect.43    `objm2`44        Select Objective Modula-2 dialect.45 46    The PIM and ISO dialect options may be qualified with a language extension.47 48    Language Extensions:49 50    `+aglet`51        Select Aglet Modula-2 extensions, available with m2iso.52    `+gm2`53        Select GNU Modula-2 extensions, available with m2pim.54    `+p1`55        Select p1 Modula-2 extensions, available with m2iso.56    `+xds`57        Select XDS Modula-2 extensions, available with m2iso.58 59 60    Passing a Dialect Option via Unix Commandline Interface61 62    Dialect options may be passed to the lexer using the `dialect` key.63    Only one such option should be passed. If multiple dialect options are64    passed, the first valid option is used, any subsequent options are ignored.65 66    Examples:67 68    `$ pygmentize -O full,dialect=m2iso -f html -o /path/to/output /path/to/input`69        Use ISO dialect to render input to HTML output70    `$ pygmentize -O full,dialect=m2iso+p1 -f rtf -o /path/to/output /path/to/input`71        Use ISO dialect with p1 extensions to render input to RTF output72 73 74    Embedding a Dialect Option within a source file75 76    A dialect option may be embedded in a source file in form of a dialect77    tag, a specially formatted comment that specifies a dialect option.78 79    Dialect Tag EBNF::80 81       dialectTag :82           OpeningCommentDelim Prefix dialectOption ClosingCommentDelim ;83 84       dialectOption :85           'm2pim' | 'm2iso' | 'm2r10' | 'objm2' |86           'm2iso+aglet' | 'm2pim+gm2' | 'm2iso+p1' | 'm2iso+xds' ;87 88       Prefix : '!' ;89 90       OpeningCommentDelim : '(*' ;91 92       ClosingCommentDelim : '*)' ;93 94    No whitespace is permitted between the tokens of a dialect tag.95 96    In the event that a source file contains multiple dialect tags, the first97    tag that contains a valid dialect option will be used and any subsequent98    dialect tags will be ignored.  Ideally, a dialect tag should be placed99    at the beginning of a source file.100 101    An embedded dialect tag overrides a dialect option set via command line.102 103    Examples:104 105    ``(*!m2r10*) DEFINITION MODULE Foobar; ...``106        Use Modula2 R10 dialect to render this source file.107    ``(*!m2pim+gm2*) DEFINITION MODULE Bazbam; ...``108        Use PIM dialect with GNU extensions to render this source file.109 110 111    Algol Publication Mode:112 113    In Algol publication mode, source text is rendered for publication of114    algorithms in scientific papers and academic texts, following the format115    of the Revised Algol-60 Language Report.  It is activated by passing116    one of two corresponding styles as an option:117 118    `algol`119        render reserved words lowercase underline boldface120        and builtins lowercase boldface italic121    `algol_nu`122        render reserved words lowercase boldface (no underlining)123        and builtins lowercase boldface italic124 125    The lexer automatically performs the required lowercase conversion when126    this mode is activated.127 128    Example:129 130    ``$ pygmentize -O full,style=algol -f latex -o /path/to/output /path/to/input``131        Render input file in Algol publication mode to LaTeX output.132 133 134    Rendering Mode of First Class ADT Identifiers:135 136    The rendering of standard library first class ADT identifiers is controlled137    by option flag "treat_stdlib_adts_as_builtins".138 139    When this option is turned on, standard library ADT identifiers are rendered140    as builtins.  When it is turned off, they are rendered as ordinary library141    identifiers.142 143    `treat_stdlib_adts_as_builtins` (default: On)144 145    The option is useful for dialects that support ADTs as first class objects146    and provide ADTs in the standard library that would otherwise be built-in.147 148    At present, only Modula-2 R10 supports library ADTs as first class objects149    and therefore, no ADT identifiers are defined for any other dialects.150 151    Example:152 153    ``$ pygmentize -O full,dialect=m2r10,treat_stdlib_adts_as_builtins=Off ...``154        Render standard library ADTs as ordinary library types.155 156    .. versionchanged:: 2.1157       Added multi-dialect support.158    """159    name = 'Modula-2'160    url = 'http://www.modula2.org/'161    aliases = ['modula2', 'm2']162    filenames = ['*.def', '*.mod']163    mimetypes = ['text/x-modula2']164    version_added = '1.3'165 166    flags = re.MULTILINE | re.DOTALL167 168    tokens = {169        'whitespace': [170            (r'\n+', Text),  # blank lines171            (r'\s+', Text),  # whitespace172        ],173        'dialecttags': [174            # PIM Dialect Tag175            (r'\(\*!m2pim\*\)', Comment.Special),176            # ISO Dialect Tag177            (r'\(\*!m2iso\*\)', Comment.Special),178            # M2R10 Dialect Tag179            (r'\(\*!m2r10\*\)', Comment.Special),180            # ObjM2 Dialect Tag181            (r'\(\*!objm2\*\)', Comment.Special),182            # Aglet Extensions Dialect Tag183            (r'\(\*!m2iso\+aglet\*\)', Comment.Special),184            # GNU Extensions Dialect Tag185            (r'\(\*!m2pim\+gm2\*\)', Comment.Special),186            # p1 Extensions Dialect Tag187            (r'\(\*!m2iso\+p1\*\)', Comment.Special),188            # XDS Extensions Dialect Tag189            (r'\(\*!m2iso\+xds\*\)', Comment.Special),190        ],191        'identifiers': [192            (r'([a-zA-Z_$][\w$]*)', Name),193        ],194        'prefixed_number_literals': [195            #196            # Base-2, whole number197            (r'0b[01]+(\'[01]+)*', Number.Bin),198            #199            # Base-16, whole number200            (r'0[ux][0-9A-F]+(\'[0-9A-F]+)*', Number.Hex),201        ],202        'plain_number_literals': [203            #204            # Base-10, real number with exponent205            (r'[0-9]+(\'[0-9]+)*'  # integral part206             r'\.[0-9]+(\'[0-9]+)*'  # fractional part207             r'[eE][+-]?[0-9]+(\'[0-9]+)*',  # exponent208             Number.Float),209            #210            # Base-10, real number without exponent211            (r'[0-9]+(\'[0-9]+)*'  # integral part212             r'\.[0-9]+(\'[0-9]+)*',  # fractional part213             Number.Float),214            #215            # Base-10, whole number216            (r'[0-9]+(\'[0-9]+)*', Number.Integer),217        ],218        'suffixed_number_literals': [219            #220            # Base-8, whole number221            (r'[0-7]+B', Number.Oct),222            #223            # Base-8, character code224            (r'[0-7]+C', Number.Oct),225            #226            # Base-16, number227            (r'[0-9A-F]+H', Number.Hex),228        ],229        'string_literals': [230            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),231            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),232        ],233        'digraph_operators': [234            # Dot Product Operator235            (r'\*\.', Operator),236            # Array Concatenation Operator237            (r'\+>', Operator),  # M2R10 + ObjM2238            # Inequality Operator239            (r'<>', Operator),  # ISO + PIM240            # Less-Or-Equal, Subset241            (r'<=', Operator),242            # Greater-Or-Equal, Superset243            (r'>=', Operator),244            # Identity Operator245            (r'==', Operator),  # M2R10 + ObjM2246            # Type Conversion Operator247            (r'::', Operator),  # M2R10 + ObjM2248            # Assignment Symbol249            (r':=', Operator),250            # Postfix Increment Mutator251            (r'\+\+', Operator),  # M2R10 + ObjM2252            # Postfix Decrement Mutator253            (r'--', Operator),  # M2R10 + ObjM2254        ],255        'unigraph_operators': [256            # Arithmetic Operators257            (r'[+-]', Operator),258            (r'[*/]', Operator),259            # ISO 80000-2 compliant Set Difference Operator260            (r'\\', Operator),  # M2R10 + ObjM2261            # Relational Operators262            (r'[=#<>]', Operator),263            # Dereferencing Operator264            (r'\^', Operator),265            # Dereferencing Operator Synonym266            (r'@', Operator),  # ISO267            # Logical AND Operator Synonym268            (r'&', Operator),  # PIM + ISO269            # Logical NOT Operator Synonym270            (r'~', Operator),  # PIM + ISO271            # Smalltalk Message Prefix272            (r'`', Operator),  # ObjM2273        ],274        'digraph_punctuation': [275            # Range Constructor276            (r'\.\.', Punctuation),277            # Opening Chevron Bracket278            (r'<<', Punctuation),  # M2R10 + ISO279            # Closing Chevron Bracket280            (r'>>', Punctuation),  # M2R10 + ISO281            # Blueprint Punctuation282            (r'->', Punctuation),  # M2R10 + ISO283            # Distinguish |# and # in M2 R10284            (r'\|#', Punctuation),285            # Distinguish ## and # in M2 R10286            (r'##', Punctuation),287            # Distinguish |* and * in M2 R10288            (r'\|\*', Punctuation),289        ],290        'unigraph_punctuation': [291            # Common Punctuation292            (r'[()\[\]{},.:;|]', Punctuation),293            # Case Label Separator Synonym294            (r'!', Punctuation),  # ISO295            # Blueprint Punctuation296            (r'\?', Punctuation),  # M2R10 + ObjM2297        ],298        'comments': [299            # Single Line Comment300            (r'^//.*?\n', Comment.Single),  # M2R10 + ObjM2301            # Block Comment302            (r'\(\*([^$].*?)\*\)', Comment.Multiline),303            # Template Block Comment304            (r'/\*(.*?)\*/', Comment.Multiline),  # M2R10 + ObjM2305        ],306        'pragmas': [307            # ISO Style Pragmas308            (r'<\*.*?\*>', Comment.Preproc),  # ISO, M2R10 + ObjM2309            # Pascal Style Pragmas310            (r'\(\*\$.*?\*\)', Comment.Preproc),  # PIM311        ],312        'root': [313            include('whitespace'),314            include('dialecttags'),315            include('pragmas'),316            include('comments'),317            include('identifiers'),318            include('suffixed_number_literals'),  # PIM + ISO319            include('prefixed_number_literals'),  # M2R10 + ObjM2320            include('plain_number_literals'),321            include('string_literals'),322            include('digraph_punctuation'),323            include('digraph_operators'),324            include('unigraph_punctuation'),325            include('unigraph_operators'),326        ]327    }328 329#  C o m m o n   D a t a s e t s330 331    # Common Reserved Words Dataset332    common_reserved_words = (333        # 37 common reserved words334        'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION', 'DIV',335        'DO', 'ELSE', 'ELSIF', 'END', 'EXIT', 'FOR', 'FROM', 'IF',336        'IMPLEMENTATION', 'IMPORT', 'IN', 'LOOP', 'MOD', 'MODULE', 'NOT',337        'OF', 'OR', 'POINTER', 'PROCEDURE', 'RECORD', 'REPEAT', 'RETURN',338        'SET', 'THEN', 'TO', 'TYPE', 'UNTIL', 'VAR', 'WHILE',339    )340 341    # Common Builtins Dataset342    common_builtins = (343        # 16 common builtins344        'ABS', 'BOOLEAN', 'CARDINAL', 'CHAR', 'CHR', 'FALSE', 'INTEGER',345        'LONGINT', 'LONGREAL', 'MAX', 'MIN', 'NIL', 'ODD', 'ORD', 'REAL',346        'TRUE',347    )348 349    # Common Pseudo-Module Builtins Dataset350    common_pseudo_builtins = (351        # 4 common pseudo builtins352        'ADDRESS', 'BYTE', 'WORD', 'ADR'353    )354 355#  P I M   M o d u l a - 2   D a t a s e t s356 357    # Lexemes to Mark as Error Tokens for PIM Modula-2358    pim_lexemes_to_reject = (359        '!', '`', '@', '$', '%', '?', '\\', '==', '++', '--', '::', '*.',360        '+>', '->', '<<', '>>', '|#', '##',361    )362 363    # PIM Modula-2 Additional Reserved Words Dataset364    pim_additional_reserved_words = (365        # 3 additional reserved words366        'EXPORT', 'QUALIFIED', 'WITH',367    )368 369    # PIM Modula-2 Additional Builtins Dataset370    pim_additional_builtins = (371        # 16 additional builtins372        'BITSET', 'CAP', 'DEC', 'DISPOSE', 'EXCL', 'FLOAT', 'HALT', 'HIGH',373        'INC', 'INCL', 'NEW', 'NIL', 'PROC', 'SIZE', 'TRUNC', 'VAL',374    )375 376    # PIM Modula-2 Additional Pseudo-Module Builtins Dataset377    pim_additional_pseudo_builtins = (378        # 5 additional pseudo builtins379        'SYSTEM', 'PROCESS', 'TSIZE', 'NEWPROCESS', 'TRANSFER',380    )381 382#  I S O   M o d u l a - 2   D a t a s e t s383 384    # Lexemes to Mark as Error Tokens for ISO Modula-2385    iso_lexemes_to_reject = (386        '`', '$', '%', '?', '\\', '==', '++', '--', '::', '*.', '+>', '->',387        '<<', '>>', '|#', '##',388    )389 390    # ISO Modula-2 Additional Reserved Words Dataset391    iso_additional_reserved_words = (392        # 9 additional reserved words (ISO 10514-1)393        'EXCEPT', 'EXPORT', 'FINALLY', 'FORWARD', 'PACKEDSET', 'QUALIFIED',394        'REM', 'RETRY', 'WITH',395        # 10 additional reserved words (ISO 10514-2 & ISO 10514-3)396        'ABSTRACT', 'AS', 'CLASS', 'GUARD', 'INHERIT', 'OVERRIDE', 'READONLY',397        'REVEAL', 'TRACED', 'UNSAFEGUARDED',398    )399 400    # ISO Modula-2 Additional Builtins Dataset401    iso_additional_builtins = (402        # 26 additional builtins (ISO 10514-1)403        'BITSET', 'CAP', 'CMPLX', 'COMPLEX', 'DEC', 'DISPOSE', 'EXCL', 'FLOAT',404        'HALT', 'HIGH', 'IM', 'INC', 'INCL', 'INT', 'INTERRUPTIBLE',  'LENGTH',405        'LFLOAT', 'LONGCOMPLEX', 'NEW', 'PROC', 'PROTECTION', 'RE', 'SIZE',406        'TRUNC', 'UNINTERRUBTIBLE', 'VAL',407        # 5 additional builtins (ISO 10514-2 & ISO 10514-3)408        'CREATE', 'DESTROY', 'EMPTY', 'ISMEMBER', 'SELF',409    )410 411    # ISO Modula-2 Additional Pseudo-Module Builtins Dataset412    iso_additional_pseudo_builtins = (413        # 14 additional builtins (SYSTEM)414        'SYSTEM', 'BITSPERLOC', 'LOCSPERBYTE', 'LOCSPERWORD', 'LOC',415        'ADDADR', 'SUBADR', 'DIFADR', 'MAKEADR', 'ADR',416        'ROTATE', 'SHIFT', 'CAST', 'TSIZE',417        # 13 additional builtins (COROUTINES)418        'COROUTINES', 'ATTACH', 'COROUTINE', 'CURRENT', 'DETACH', 'HANDLER',419        'INTERRUPTSOURCE', 'IOTRANSFER', 'IsATTACHED', 'LISTEN',420        'NEWCOROUTINE', 'PROT', 'TRANSFER',421        # 9 additional builtins (EXCEPTIONS)422        'EXCEPTIONS', 'AllocateSource', 'CurrentNumber', 'ExceptionNumber',423        'ExceptionSource', 'GetMessage', 'IsCurrentSource',424        'IsExceptionalExecution', 'RAISE',425        # 3 additional builtins (TERMINATION)426        'TERMINATION', 'IsTerminating', 'HasHalted',427        # 4 additional builtins (M2EXCEPTION)428        'M2EXCEPTION', 'M2Exceptions', 'M2Exception', 'IsM2Exception',429        'indexException', 'rangeException', 'caseSelectException',430        'invalidLocation', 'functionException', 'wholeValueException',431        'wholeDivException', 'realValueException', 'realDivException',432        'complexValueException', 'complexDivException', 'protException',433        'sysException', 'coException', 'exException',434    )435 436#  M o d u l a - 2   R 1 0   D a t a s e t s437 438    # Lexemes to Mark as Error Tokens for Modula-2 R10439    m2r10_lexemes_to_reject = (440        '!', '`', '@', '$', '%', '&', '<>',441    )442 443    # Modula-2 R10 reserved words in addition to the common set444    m2r10_additional_reserved_words = (445        # 12 additional reserved words446        'ALIAS', 'ARGLIST', 'BLUEPRINT', 'COPY', 'GENLIB', 'INDETERMINATE',447        'NEW', 'NONE', 'OPAQUE', 'REFERENTIAL', 'RELEASE', 'RETAIN',448        # 2 additional reserved words with symbolic assembly option449        'ASM', 'REG',450    )451 452    # Modula-2 R10 builtins in addition to the common set453    m2r10_additional_builtins = (454        # 26 additional builtins455        'CARDINAL', 'COUNT', 'EMPTY', 'EXISTS', 'INSERT', 'LENGTH', 'LONGCARD',456        'OCTET', 'PTR', 'PRED', 'READ', 'READNEW', 'REMOVE', 'RETRIEVE', 'SORT',457        'STORE', 'SUBSET', 'SUCC', 'TLIMIT', 'TMAX', 'TMIN', 'TRUE', 'TSIZE',458        'UNICHAR', 'WRITE', 'WRITEF',459    )460 461    # Modula-2 R10 Additional Pseudo-Module Builtins Dataset462    m2r10_additional_pseudo_builtins = (463        # 13 additional builtins (TPROPERTIES)464        'TPROPERTIES', 'PROPERTY', 'LITERAL', 'TPROPERTY', 'TLITERAL',465        'TBUILTIN', 'TDYN', 'TREFC', 'TNIL', 'TBASE', 'TPRECISION',466        'TMAXEXP', 'TMINEXP',467        # 4 additional builtins (CONVERSION)468        'CONVERSION', 'TSXFSIZE', 'SXF', 'VAL',469        # 35 additional builtins (UNSAFE)470        'UNSAFE', 'CAST', 'INTRINSIC', 'AVAIL', 'ADD', 'SUB', 'ADDC', 'SUBC',471        'FETCHADD', 'FETCHSUB', 'SHL', 'SHR', 'ASHR', 'ROTL', 'ROTR', 'ROTLC',472        'ROTRC', 'BWNOT', 'BWAND', 'BWOR', 'BWXOR', 'BWNAND', 'BWNOR',473        'SETBIT', 'TESTBIT', 'LSBIT', 'MSBIT', 'CSBITS', 'BAIL', 'HALT',474        'TODO', 'FFI', 'ADDR', 'VARGLIST', 'VARGC',475        # 11 additional builtins (ATOMIC)476        'ATOMIC', 'INTRINSIC', 'AVAIL', 'SWAP', 'CAS', 'INC', 'DEC', 'BWAND',477        'BWNAND', 'BWOR', 'BWXOR',478        # 7 additional builtins (COMPILER)479        'COMPILER', 'DEBUG', 'MODNAME', 'PROCNAME', 'LINENUM', 'DEFAULT',480        'HASH',481        # 5 additional builtins (ASSEMBLER)482        'ASSEMBLER', 'REGISTER', 'SETREG', 'GETREG', 'CODE',483    )484 485#  O b j e c t i v e   M o d u l a - 2   D a t a s e t s486 487    # Lexemes to Mark as Error Tokens for Objective Modula-2488    objm2_lexemes_to_reject = (489        '!', '$', '%', '&', '<>',490    )491 492    # Objective Modula-2 Extensions493    # reserved words in addition to Modula-2 R10494    objm2_additional_reserved_words = (495        # 16 additional reserved words496        'BYCOPY', 'BYREF', 'CLASS', 'CONTINUE', 'CRITICAL', 'INOUT', 'METHOD',497        'ON', 'OPTIONAL', 'OUT', 'PRIVATE', 'PROTECTED', 'PROTOCOL', 'PUBLIC',498        'SUPER', 'TRY',499    )500 501    # Objective Modula-2 Extensions502    # builtins in addition to Modula-2 R10503    objm2_additional_builtins = (504        # 3 additional builtins505        'OBJECT', 'NO', 'YES',506    )507 508    # Objective Modula-2 Extensions509    # pseudo-module builtins in addition to Modula-2 R10510    objm2_additional_pseudo_builtins = (511        # None512    )513 514#  A g l e t   M o d u l a - 2   D a t a s e t s515 516    # Aglet Extensions517    # reserved words in addition to ISO Modula-2518    aglet_additional_reserved_words = (519        # None520    )521 522    # Aglet Extensions523    # builtins in addition to ISO Modula-2524    aglet_additional_builtins = (525        # 9 additional builtins526        'BITSET8', 'BITSET16', 'BITSET32', 'CARDINAL8', 'CARDINAL16',527        'CARDINAL32', 'INTEGER8', 'INTEGER16', 'INTEGER32',528    )529 530    # Aglet Modula-2 Extensions531    # pseudo-module builtins in addition to ISO Modula-2532    aglet_additional_pseudo_builtins = (533        # None534    )535 536#  G N U   M o d u l a - 2   D a t a s e t s537 538    # GNU Extensions539    # reserved words in addition to PIM Modula-2540    gm2_additional_reserved_words = (541        # 10 additional reserved words542        'ASM', '__ATTRIBUTE__', '__BUILTIN__', '__COLUMN__', '__DATE__',543        '__FILE__', '__FUNCTION__', '__LINE__', '__MODULE__', 'VOLATILE',544    )545 546    # GNU Extensions547    # builtins in addition to PIM Modula-2548    gm2_additional_builtins = (549        # 21 additional builtins550        'BITSET8', 'BITSET16', 'BITSET32', 'CARDINAL8', 'CARDINAL16',551        'CARDINAL32', 'CARDINAL64', 'COMPLEX32', 'COMPLEX64', 'COMPLEX96',552        'COMPLEX128', 'INTEGER8', 'INTEGER16', 'INTEGER32', 'INTEGER64',553        'REAL8', 'REAL16', 'REAL32', 'REAL96', 'REAL128', 'THROW',554    )555 556    # GNU Extensions557    # pseudo-module builtins in addition to PIM Modula-2558    gm2_additional_pseudo_builtins = (559        # None560    )561 562#  p 1   M o d u l a - 2   D a t a s e t s563 564    # p1 Extensions565    # reserved words in addition to ISO Modula-2566    p1_additional_reserved_words = (567        # None568    )569 570    # p1 Extensions571    # builtins in addition to ISO Modula-2572    p1_additional_builtins = (573        # None574    )575 576    # p1 Modula-2 Extensions577    # pseudo-module builtins in addition to ISO Modula-2578    p1_additional_pseudo_builtins = (579        # 1 additional builtin580        'BCD',581    )582 583#  X D S   M o d u l a - 2   D a t a s e t s584 585    # XDS Extensions586    # reserved words in addition to ISO Modula-2587    xds_additional_reserved_words = (588        # 1 additional reserved word589        'SEQ',590    )591 592    # XDS Extensions593    # builtins in addition to ISO Modula-2594    xds_additional_builtins = (595        # 9 additional builtins596        'ASH', 'ASSERT', 'DIFFADR_TYPE', 'ENTIER', 'INDEX', 'LEN',597        'LONGCARD', 'SHORTCARD', 'SHORTINT',598    )599 600    # XDS Modula-2 Extensions601    # pseudo-module builtins in addition to ISO Modula-2602    xds_additional_pseudo_builtins = (603        # 22 additional builtins (SYSTEM)604        'PROCESS', 'NEWPROCESS', 'BOOL8', 'BOOL16', 'BOOL32', 'CARD8',605        'CARD16', 'CARD32', 'INT8', 'INT16', 'INT32', 'REF', 'MOVE',606        'FILL', 'GET', 'PUT', 'CC', 'int', 'unsigned', 'size_t', 'void'607        # 3 additional builtins (COMPILER)608        'COMPILER', 'OPTION', 'EQUATION'609    )610 611#  P I M   S t a n d a r d   L i b r a r y   D a t a s e t s612 613    # PIM Modula-2 Standard Library Modules Dataset614    pim_stdlib_module_identifiers = (615        'Terminal', 'FileSystem', 'InOut', 'RealInOut', 'MathLib0', 'Storage',616    )617 618    # PIM Modula-2 Standard Library Types Dataset619    pim_stdlib_type_identifiers = (620        'Flag', 'FlagSet', 'Response', 'Command', 'Lock', 'Permission',621        'MediumType', 'File', 'FileProc', 'DirectoryProc', 'FileCommand',622        'DirectoryCommand',623    )624 625    # PIM Modula-2 Standard Library Procedures Dataset626    pim_stdlib_proc_identifiers = (627        'Read', 'BusyRead', 'ReadAgain', 'Write', 'WriteString', 'WriteLn',628        'Create', 'Lookup', 'Close', 'Delete', 'Rename', 'SetRead', 'SetWrite',629        'SetModify', 'SetOpen', 'Doio', 'SetPos', 'GetPos', 'Length', 'Reset',630        'Again', 'ReadWord', 'WriteWord', 'ReadChar', 'WriteChar',631        'CreateMedium', 'DeleteMedium', 'AssignName', 'DeassignName',632        'ReadMedium', 'LookupMedium', 'OpenInput', 'OpenOutput', 'CloseInput',633        'CloseOutput', 'ReadString', 'ReadInt', 'ReadCard', 'ReadWrd',634        'WriteInt', 'WriteCard', 'WriteOct', 'WriteHex', 'WriteWrd',635        'ReadReal', 'WriteReal', 'WriteFixPt', 'WriteRealOct', 'sqrt', 'exp',636        'ln', 'sin', 'cos', 'arctan', 'entier', 'ALLOCATE', 'DEALLOCATE',637    )638 639    # PIM Modula-2 Standard Library Variables Dataset640    pim_stdlib_var_identifiers = (641        'Done', 'termCH', 'in', 'out'642    )643 644    # PIM Modula-2 Standard Library Constants Dataset645    pim_stdlib_const_identifiers = (646        'EOL',647    )648 649#  I S O   S t a n d a r d   L i b r a r y   D a t a s e t s650 651    # ISO Modula-2 Standard Library Modules Dataset652    iso_stdlib_module_identifiers = (653        # TO DO654    )655 656    # ISO Modula-2 Standard Library Types Dataset657    iso_stdlib_type_identifiers = (658        # TO DO659    )660 661    # ISO Modula-2 Standard Library Procedures Dataset662    iso_stdlib_proc_identifiers = (663        # TO DO664    )665 666    # ISO Modula-2 Standard Library Variables Dataset667    iso_stdlib_var_identifiers = (668        # TO DO669    )670 671    # ISO Modula-2 Standard Library Constants Dataset672    iso_stdlib_const_identifiers = (673        # TO DO674    )675 676#  M 2   R 1 0   S t a n d a r d   L i b r a r y   D a t a s e t s677 678    # Modula-2 R10 Standard Library ADTs Dataset679    m2r10_stdlib_adt_identifiers = (680        'BCD', 'LONGBCD', 'BITSET', 'SHORTBITSET', 'LONGBITSET',681        'LONGLONGBITSET', 'COMPLEX', 'LONGCOMPLEX', 'SHORTCARD', 'LONGLONGCARD',682        'SHORTINT', 'LONGLONGINT', 'POSINT', 'SHORTPOSINT', 'LONGPOSINT',683        'LONGLONGPOSINT', 'BITSET8', 'BITSET16', 'BITSET32', 'BITSET64',684        'BITSET128', 'BS8', 'BS16', 'BS32', 'BS64', 'BS128', 'CARDINAL8',685        'CARDINAL16', 'CARDINAL32', 'CARDINAL64', 'CARDINAL128', 'CARD8',686        'CARD16', 'CARD32', 'CARD64', 'CARD128', 'INTEGER8', 'INTEGER16',687        'INTEGER32', 'INTEGER64', 'INTEGER128', 'INT8', 'INT16', 'INT32',688        'INT64', 'INT128', 'STRING', 'UNISTRING',689    )690 691    # Modula-2 R10 Standard Library Blueprints Dataset692    m2r10_stdlib_blueprint_identifiers = (693        'ProtoRoot', 'ProtoComputational', 'ProtoNumeric', 'ProtoScalar',694        'ProtoNonScalar', 'ProtoCardinal', 'ProtoInteger', 'ProtoReal',695        'ProtoComplex', 'ProtoVector', 'ProtoTuple', 'ProtoCompArray',696        'ProtoCollection', 'ProtoStaticArray', 'ProtoStaticSet',697        'ProtoStaticString', 'ProtoArray', 'ProtoString', 'ProtoSet',698        'ProtoMultiSet', 'ProtoDictionary', 'ProtoMultiDict', 'ProtoExtension',699        'ProtoIO', 'ProtoCardMath', 'ProtoIntMath', 'ProtoRealMath',700    )701 702    # Modula-2 R10 Standard Library Modules Dataset703    m2r10_stdlib_module_identifiers = (704        'ASCII', 'BooleanIO', 'CharIO', 'UnicharIO', 'OctetIO',705        'CardinalIO', 'LongCardIO', 'IntegerIO', 'LongIntIO', 'RealIO',706        'LongRealIO', 'BCDIO', 'LongBCDIO', 'CardMath', 'LongCardMath',707        'IntMath', 'LongIntMath', 'RealMath', 'LongRealMath', 'BCDMath',708        'LongBCDMath', 'FileIO', 'FileSystem', 'Storage', 'IOSupport',709    )710 711    # Modula-2 R10 Standard Library Types Dataset712    m2r10_stdlib_type_identifiers = (713        'File', 'Status',714        # TO BE COMPLETED715    )716 717    # Modula-2 R10 Standard Library Procedures Dataset718    m2r10_stdlib_proc_identifiers = (719        'ALLOCATE', 'DEALLOCATE', 'SIZE',720        # TO BE COMPLETED721    )722 723    # Modula-2 R10 Standard Library Variables Dataset724    m2r10_stdlib_var_identifiers = (725        'stdIn', 'stdOut', 'stdErr',726    )727 728    # Modula-2 R10 Standard Library Constants Dataset729    m2r10_stdlib_const_identifiers = (730        'pi', 'tau',731    )732 733#  D i a l e c t s734 735    # Dialect modes736    dialects = (737        'unknown',738        'm2pim', 'm2iso', 'm2r10', 'objm2',739        'm2iso+aglet', 'm2pim+gm2', 'm2iso+p1', 'm2iso+xds',740    )741 742#   D a t a b a s e s743 744    # Lexemes to Mark as Errors Database745    lexemes_to_reject_db = {746        # Lexemes to reject for unknown dialect747        'unknown': (748            # LEAVE THIS EMPTY749        ),750        # Lexemes to reject for PIM Modula-2751        'm2pim': (752            pim_lexemes_to_reject,753        ),754        # Lexemes to reject for ISO Modula-2755        'm2iso': (756            iso_lexemes_to_reject,757        ),758        # Lexemes to reject for Modula-2 R10759        'm2r10': (760            m2r10_lexemes_to_reject,761        ),762        # Lexemes to reject for Objective Modula-2763        'objm2': (764            objm2_lexemes_to_reject,765        ),766        # Lexemes to reject for Aglet Modula-2767        'm2iso+aglet': (768            iso_lexemes_to_reject,769        ),770        # Lexemes to reject for GNU Modula-2771        'm2pim+gm2': (772            pim_lexemes_to_reject,773        ),774        # Lexemes to reject for p1 Modula-2775        'm2iso+p1': (776            iso_lexemes_to_reject,777        ),778        # Lexemes to reject for XDS Modula-2779        'm2iso+xds': (780            iso_lexemes_to_reject,781        ),782    }783 784    # Reserved Words Database785    reserved_words_db = {786        # Reserved words for unknown dialect787        'unknown': (788            common_reserved_words,789            pim_additional_reserved_words,790            iso_additional_reserved_words,791            m2r10_additional_reserved_words,792        ),793 794        # Reserved words for PIM Modula-2795        'm2pim': (796            common_reserved_words,797            pim_additional_reserved_words,798        ),799 800        # Reserved words for Modula-2 R10801        'm2iso': (802            common_reserved_words,803            iso_additional_reserved_words,804        ),805 806        # Reserved words for ISO Modula-2807        'm2r10': (808            common_reserved_words,809            m2r10_additional_reserved_words,810        ),811 812        # Reserved words for Objective Modula-2813        'objm2': (814            common_reserved_words,815            m2r10_additional_reserved_words,816            objm2_additional_reserved_words,817        ),818 819        # Reserved words for Aglet Modula-2 Extensions820        'm2iso+aglet': (821            common_reserved_words,822            iso_additional_reserved_words,823            aglet_additional_reserved_words,824        ),825 826        # Reserved words for GNU Modula-2 Extensions827        'm2pim+gm2': (828            common_reserved_words,829            pim_additional_reserved_words,830            gm2_additional_reserved_words,831        ),832 833        # Reserved words for p1 Modula-2 Extensions834        'm2iso+p1': (835            common_reserved_words,836            iso_additional_reserved_words,837            p1_additional_reserved_words,838        ),839 840        # Reserved words for XDS Modula-2 Extensions841        'm2iso+xds': (842            common_reserved_words,843            iso_additional_reserved_words,844            xds_additional_reserved_words,845        ),846    }847 848    # Builtins Database849    builtins_db = {850        # Builtins for unknown dialect851        'unknown': (852            common_builtins,853            pim_additional_builtins,854            iso_additional_builtins,855            m2r10_additional_builtins,856        ),857 858        # Builtins for PIM Modula-2859        'm2pim': (860            common_builtins,861            pim_additional_builtins,862        ),863 864        # Builtins for ISO Modula-2865        'm2iso': (866            common_builtins,867            iso_additional_builtins,868        ),869 870        # Builtins for ISO Modula-2871        'm2r10': (872            common_builtins,873            m2r10_additional_builtins,874        ),875 876        # Builtins for Objective Modula-2877        'objm2': (878            common_builtins,879            m2r10_additional_builtins,880            objm2_additional_builtins,881        ),882 883        # Builtins for Aglet Modula-2 Extensions884        'm2iso+aglet': (885            common_builtins,886            iso_additional_builtins,887            aglet_additional_builtins,888        ),889 890        # Builtins for GNU Modula-2 Extensions891        'm2pim+gm2': (892            common_builtins,893            pim_additional_builtins,894            gm2_additional_builtins,895        ),896 897        # Builtins for p1 Modula-2 Extensions898        'm2iso+p1': (899            common_builtins,900            iso_additional_builtins,901            p1_additional_builtins,902        ),903 904        # Builtins for XDS Modula-2 Extensions905        'm2iso+xds': (906            common_builtins,907            iso_additional_builtins,908            xds_additional_builtins,909        ),910    }911 912    # Pseudo-Module Builtins Database913    pseudo_builtins_db = {914        # Builtins for unknown dialect915        'unknown': (916            common_pseudo_builtins,917            pim_additional_pseudo_builtins,918            iso_additional_pseudo_builtins,919            m2r10_additional_pseudo_builtins,920        ),921 922        # Builtins for PIM Modula-2923        'm2pim': (924            common_pseudo_builtins,925            pim_additional_pseudo_builtins,926        ),927 928        # Builtins for ISO Modula-2929        'm2iso': (930            common_pseudo_builtins,931            iso_additional_pseudo_builtins,932        ),933 934        # Builtins for ISO Modula-2935        'm2r10': (936            common_pseudo_builtins,937            m2r10_additional_pseudo_builtins,938        ),939 940        # Builtins for Objective Modula-2941        'objm2': (942            common_pseudo_builtins,943            m2r10_additional_pseudo_builtins,944            objm2_additional_pseudo_builtins,945        ),946 947        # Builtins for Aglet Modula-2 Extensions948        'm2iso+aglet': (949            common_pseudo_builtins,950            iso_additional_pseudo_builtins,951            aglet_additional_pseudo_builtins,952        ),953 954        # Builtins for GNU Modula-2 Extensions955        'm2pim+gm2': (956            common_pseudo_builtins,957            pim_additional_pseudo_builtins,958            gm2_additional_pseudo_builtins,959        ),960 961        # Builtins for p1 Modula-2 Extensions962        'm2iso+p1': (963            common_pseudo_builtins,964            iso_additional_pseudo_builtins,965            p1_additional_pseudo_builtins,966        ),967 968        # Builtins for XDS Modula-2 Extensions969        'm2iso+xds': (970            common_pseudo_builtins,971            iso_additional_pseudo_builtins,972            xds_additional_pseudo_builtins,973        ),974    }975 976    # Standard Library ADTs Database977    stdlib_adts_db = {978        # Empty entry for unknown dialect979        'unknown': (980            # LEAVE THIS EMPTY981        ),982        # Standard Library ADTs for PIM Modula-2983        'm2pim': (984            # No first class library types985        ),986 987        # Standard Library ADTs for ISO Modula-2988        'm2iso': (989            # No first class library types990        ),991 992        # Standard Library ADTs for Modula-2 R10993        'm2r10': (994            m2r10_stdlib_adt_identifiers,995        ),996 997        # Standard Library ADTs for Objective Modula-2998        'objm2': (999            m2r10_stdlib_adt_identifiers,1000        ),1001 1002        # Standard Library ADTs for Aglet Modula-21003        'm2iso+aglet': (1004            # No first class library types1005        ),1006 1007        # Standard Library ADTs for GNU Modula-21008        'm2pim+gm2': (1009            # No first class library types1010        ),1011 1012        # Standard Library ADTs for p1 Modula-21013        'm2iso+p1': (1014            # No first class library types1015        ),1016 1017        # Standard Library ADTs for XDS Modula-21018        'm2iso+xds': (1019            # No first class library types1020        ),1021    }1022 1023    # Standard Library Modules Database1024    stdlib_modules_db = {1025        # Empty entry for unknown dialect1026        'unknown': (1027            # LEAVE THIS EMPTY1028        ),1029        # Standard Library Modules for PIM Modula-21030        'm2pim': (1031            pim_stdlib_module_identifiers,1032        ),1033 1034        # Standard Library Modules for ISO Modula-21035        'm2iso': (1036            iso_stdlib_module_identifiers,1037        ),1038 1039        # Standard Library Modules for Modula-2 R101040        'm2r10': (1041            m2r10_stdlib_blueprint_identifiers,1042            m2r10_stdlib_module_identifiers,1043            m2r10_stdlib_adt_identifiers,1044        ),1045 1046        # Standard Library Modules for Objective Modula-21047        'objm2': (1048            m2r10_stdlib_blueprint_identifiers,1049            m2r10_stdlib_module_identifiers,1050        ),1051 1052        # Standard Library Modules for Aglet Modula-21053        'm2iso+aglet': (1054            iso_stdlib_module_identifiers,1055        ),1056 1057        # Standard Library Modules for GNU Modula-21058        'm2pim+gm2': (1059            pim_stdlib_module_identifiers,1060        ),1061 1062        # Standard Library Modules for p1 Modula-21063        'm2iso+p1': (1064            iso_stdlib_module_identifiers,1065        ),1066 1067        # Standard Library Modules for XDS Modula-21068        'm2iso+xds': (1069            iso_stdlib_module_identifiers,1070        ),1071    }1072 1073    # Standard Library Types Database1074    stdlib_types_db = {1075        # Empty entry for unknown dialect1076        'unknown': (1077            # LEAVE THIS EMPTY1078        ),1079        # Standard Library Types for PIM Modula-21080        'm2pim': (1081            pim_stdlib_type_identifiers,1082        ),1083 1084        # Standard Library Types for ISO Modula-21085        'm2iso': (1086            iso_stdlib_type_identifiers,1087        ),1088 1089        # Standard Library Types for Modula-2 R101090        'm2r10': (1091            m2r10_stdlib_type_identifiers,1092        ),1093 1094        # Standard Library Types for Objective Modula-21095        'objm2': (1096            m2r10_stdlib_type_identifiers,1097        ),1098 1099        # Standard Library Types for Aglet Modula-21100        'm2iso+aglet': (1101            iso_stdlib_type_identifiers,1102        ),1103 1104        # Standard Library Types for GNU Modula-21105        'm2pim+gm2': (1106            pim_stdlib_type_identifiers,1107        ),1108 1109        # Standard Library Types for p1 Modula-21110        'm2iso+p1': (1111            iso_stdlib_type_identifiers,1112        ),1113 1114        # Standard Library Types for XDS Modula-21115        'm2iso+xds': (1116            iso_stdlib_type_identifiers,1117        ),1118    }1119 1120    # Standard Library Procedures Database1121    stdlib_procedures_db = {1122        # Empty entry for unknown dialect1123        'unknown': (1124            # LEAVE THIS EMPTY1125        ),1126        # Standard Library Procedures for PIM Modula-21127        'm2pim': (1128            pim_stdlib_proc_identifiers,1129        ),1130 1131        # Standard Library Procedures for ISO Modula-21132        'm2iso': (1133            iso_stdlib_proc_identifiers,1134        ),1135 1136        # Standard Library Procedures for Modula-2 R101137        'm2r10': (1138            m2r10_stdlib_proc_identifiers,1139        ),1140 1141        # Standard Library Procedures for Objective Modula-21142        'objm2': (1143            m2r10_stdlib_proc_identifiers,1144        ),1145 1146        # Standard Library Procedures for Aglet Modula-21147        'm2iso+aglet': (1148            iso_stdlib_proc_identifiers,1149        ),1150 1151        # Standard Library Procedures for GNU Modula-21152        'm2pim+gm2': (1153            pim_stdlib_proc_identifiers,1154        ),1155 1156        # Standard Library Procedures for p1 Modula-21157        'm2iso+p1': (1158            iso_stdlib_proc_identifiers,1159        ),1160 1161        # Standard Library Procedures for XDS Modula-21162        'm2iso+xds': (1163            iso_stdlib_proc_identifiers,1164        ),1165    }1166 1167    # Standard Library Variables Database1168    stdlib_variables_db = {1169        # Empty entry for unknown dialect1170        'unknown': (1171            # LEAVE THIS EMPTY1172        ),1173        # Standard Library Variables for PIM Modula-21174        'm2pim': (1175            pim_stdlib_var_identifiers,1176        ),1177 1178        # Standard Library Variables for ISO Modula-21179        'm2iso': (1180            iso_stdlib_var_identifiers,1181        ),1182 1183        # Standard Library Variables for Modula-2 R101184        'm2r10': (1185            m2r10_stdlib_var_identifiers,1186        ),1187 1188        # Standard Library Variables for Objective Modula-21189        'objm2': (1190            m2r10_stdlib_var_identifiers,1191        ),1192 1193        # Standard Library Variables for Aglet Modula-21194        'm2iso+aglet': (1195            iso_stdlib_var_identifiers,1196        ),1197 1198        # Standard Library Variables for GNU Modula-21199        'm2pim+gm2': (1200            pim_stdlib_var_identifiers,

Showing the first 1,200 of 1580 lines. Download the file for the rest.

codekingpro/portable-devtools · Team Ai