Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
business.py626 linesDownload Raw Back to lexers
1"""2    pygments.lexers.business3    ~~~~~~~~~~~~~~~~~~~~~~~~4 5    Lexers for "business-oriented" languages.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, include, words, bygroups14from pygments.token import Text, Comment, Operator, Keyword, Name, String, \15    Number, Punctuation, Error, Whitespace16 17from pygments.lexers._openedge_builtins import OPENEDGEKEYWORDS18 19__all__ = ['CobolLexer', 'CobolFreeformatLexer', 'ABAPLexer', 'OpenEdgeLexer',20           'GoodDataCLLexer', 'MaqlLexer']21 22 23class CobolLexer(RegexLexer):24    """25    Lexer for OpenCOBOL code.26    """27    name = 'COBOL'28    aliases = ['cobol']29    filenames = ['*.cob', '*.COB', '*.cpy', '*.CPY']30    mimetypes = ['text/x-cobol']31    url = 'https://en.wikipedia.org/wiki/COBOL'32    version_added = '1.6'33 34    flags = re.IGNORECASE | re.MULTILINE35 36    # Data Types: by PICTURE and USAGE37    # Operators: **, *, +, -, /, <, >, <=, >=, =, <>38    # Logical (?): NOT, AND, OR39 40    # Reserved words:41    # http://opencobol.add1tocobol.com/#reserved-words42    # Intrinsics:43    # http://opencobol.add1tocobol.com/#does-opencobol-implement-any-intrinsic-functions44 45    tokens = {46        'root': [47            include('comment'),48            include('strings'),49            include('core'),50            include('nums'),51            (r'[a-z0-9]([\w\-]*[a-z0-9]+)?', Name.Variable),52            # (r'[\s]+', Text),53            (r'[ \t]+', Whitespace),54        ],55        'comment': [56            (r'(^.{6}[*/].*\n|^.{6}|\*>.*\n)', Comment),57        ],58        'core': [59            # Figurative constants60            (r'(^|(?<=[^\w\-]))(ALL\s+)?'61             r'((ZEROES)|(HIGH-VALUE|LOW-VALUE|QUOTE|SPACE|ZERO)(S)?)'62             r'\s*($|(?=[^\w\-]))',63             Name.Constant),64 65            # Reserved words STATEMENTS and other bolds66            (words((67                'ACCEPT', 'ADD', 'ALLOCATE', 'CALL', 'CANCEL', 'CLOSE', 'COMPUTE',68                'CONFIGURATION', 'CONTINUE', 'DATA', 'DELETE', 'DISPLAY', 'DIVIDE',69                'DIVISION', 'ELSE', 'END', 'END-ACCEPT',70                'END-ADD', 'END-CALL', 'END-COMPUTE', 'END-DELETE', 'END-DISPLAY',71                'END-DIVIDE', 'END-EVALUATE', 'END-IF', 'END-MULTIPLY', 'END-OF-PAGE',72                'END-PERFORM', 'END-READ', 'END-RETURN', 'END-REWRITE', 'END-SEARCH',73                'END-START', 'END-STRING', 'END-SUBTRACT', 'END-UNSTRING', 'END-WRITE',74                'ENVIRONMENT', 'EVALUATE', 'EXIT', 'FD', 'FILE', 'FILE-CONTROL', 'FOREVER',75                'FREE', 'GENERATE', 'GO', 'GOBACK', 'IDENTIFICATION', 'IF', 'INITIALIZE',76                'INITIATE', 'INPUT-OUTPUT', 'INSPECT', 'INVOKE', 'I-O-CONTROL', 'LINKAGE',77                'LOCAL-STORAGE', 'MERGE', 'MOVE', 'MULTIPLY', 'OPEN', 'PERFORM',78                'PROCEDURE', 'PROGRAM-ID', 'RAISE', 'READ', 'RELEASE', 'RESUME',79                'RETURN', 'REWRITE', 'SCREEN', 'SD', 'SEARCH', 'SECTION', 'SET',80                'SORT', 'START', 'STOP', 'STRING', 'SUBTRACT', 'SUPPRESS',81                'TERMINATE', 'THEN', 'UNLOCK', 'UNSTRING', 'USE', 'VALIDATE',82                'WORKING-STORAGE', 'WRITE'), prefix=r'(^|(?<=[^\w\-]))',83                suffix=r'\s*($|(?=[^\w\-]))'),84             Keyword.Reserved),85 86            # Reserved words87            (words((88                'ACCESS', 'ADDRESS', 'ADVANCING', 'AFTER', 'ALL',89                'ALPHABET', 'ALPHABETIC', 'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER',90                'ALPHANUMERIC', 'ALPHANUMERIC-EDITED', 'ALSO', 'ALTER', 'ALTERNATE'91                'ANY', 'ARE', 'AREA', 'AREAS', 'ARGUMENT-NUMBER', 'ARGUMENT-VALUE', 'AS',92                'ASCENDING', 'ASSIGN', 'AT', 'AUTO', 'AUTO-SKIP', 'AUTOMATIC',93                'AUTOTERMINATE', 'BACKGROUND-COLOR', 'BASED', 'BEEP', 'BEFORE', 'BELL',94                'BLANK', 'BLINK', 'BLOCK', 'BOTTOM', 'BY', 'BYTE-LENGTH', 'CHAINING',95                'CHARACTER', 'CHARACTERS', 'CLASS', 'CODE', 'CODE-SET', 'COL',96                'COLLATING', 'COLS', 'COLUMN', 'COLUMNS', 'COMMA', 'COMMAND-LINE',97                'COMMIT', 'COMMON', 'CONSTANT', 'CONTAINS', 'CONTENT', 'CONTROL',98                'CONTROLS', 'CONVERTING', 'COPY', 'CORR', 'CORRESPONDING', 'COUNT', 'CRT',99                'CURRENCY', 'CURSOR', 'CYCLE', 'DATE', 'DAY', 'DAY-OF-WEEK', 'DE',100                'DEBUGGING', 'DECIMAL-POINT', 'DECLARATIVES', 'DEFAULT', 'DELIMITED',101                'DELIMITER', 'DEPENDING', 'DESCENDING', 'DETAIL', 'DISK',102                'DOWN', 'DUPLICATES', 'DYNAMIC', 'EBCDIC',103                'ENTRY', 'ENVIRONMENT-NAME', 'ENVIRONMENT-VALUE', 'EOL', 'EOP',104                'EOS', 'ERASE', 'ERROR', 'ESCAPE', 'EXCEPTION',105                'EXCLUSIVE', 'EXTEND', 'EXTERNAL', 'FILE-ID', 'FILLER', 'FINAL',106                'FIRST', 'FIXED', 'FLOAT-LONG', 'FLOAT-SHORT',107                'FOOTING', 'FOR', 'FOREGROUND-COLOR', 'FORMAT', 'FROM', 'FULL',108                'FUNCTION', 'FUNCTION-ID', 'GIVING', 'GLOBAL', 'GROUP',109                'HEADING', 'HIGHLIGHT', 'I-O', 'ID',110                'IGNORE', 'IGNORING', 'IN', 'INDEX', 'INDEXED', 'INDICATE',111                'INITIAL', 'INITIALIZED', 'INPUT', 'INTO', 'INTRINSIC', 'INVALID',112                'IS', 'JUST', 'JUSTIFIED', 'KEY', 'LABEL',113                'LAST', 'LEADING', 'LEFT', 'LENGTH', 'LIMIT', 'LIMITS', 'LINAGE',114                'LINAGE-COUNTER', 'LINE', 'LINES', 'LOCALE', 'LOCK',115                'LOWLIGHT', 'MANUAL', 'MEMORY', 'MINUS', 'MODE', 'MULTIPLE',116                'NATIONAL', 'NATIONAL-EDITED', 'NATIVE', 'NEGATIVE', 'NEXT', 'NO',117                'NULL', 'NULLS', 'NUMBER', 'NUMBERS', 'NUMERIC', 'NUMERIC-EDITED',118                'OBJECT-COMPUTER', 'OCCURS', 'OF', 'OFF', 'OMITTED', 'ON', 'ONLY',119                'OPTIONAL', 'ORDER', 'ORGANIZATION', 'OTHER', 'OUTPUT', 'OVERFLOW',120                'OVERLINE', 'PACKED-DECIMAL', 'PADDING', 'PAGE', 'PARAGRAPH',121                'PLUS', 'POINTER', 'POSITION', 'POSITIVE', 'PRESENT', 'PREVIOUS',122                'PRINTER', 'PRINTING', 'PROCEDURE-POINTER', 'PROCEDURES',123                'PROCEED', 'PROGRAM', 'PROGRAM-POINTER', 'PROMPT', 'QUOTE',124                'QUOTES', 'RANDOM', 'RD', 'RECORD', 'RECORDING', 'RECORDS', 'RECURSIVE',125                'REDEFINES', 'REEL', 'REFERENCE', 'RELATIVE', 'REMAINDER', 'REMOVAL',126                'RENAMES', 'REPLACING', 'REPORT', 'REPORTING', 'REPORTS', 'REPOSITORY',127                'REQUIRED', 'RESERVE', 'RETURNING', 'REVERSE-VIDEO', 'REWIND',128                'RIGHT', 'ROLLBACK', 'ROUNDED', 'RUN', 'SAME', 'SCROLL',129                'SECURE', 'SEGMENT-LIMIT', 'SELECT', 'SENTENCE', 'SEPARATE',130                'SEQUENCE', 'SEQUENTIAL', 'SHARING', 'SIGN', 'SIGNED', 'SIGNED-INT',131                'SIGNED-LONG', 'SIGNED-SHORT', 'SIZE', 'SORT-MERGE', 'SOURCE',132                'SOURCE-COMPUTER', 'SPECIAL-NAMES', 'STANDARD',133                'STANDARD-1', 'STANDARD-2', 'STATUS', 'SUBKEY', 'SUM',134                'SYMBOLIC', 'SYNC', 'SYNCHRONIZED', 'TALLYING', 'TAPE',135                'TEST', 'THROUGH', 'THRU', 'TIME', 'TIMES', 'TO', 'TOP', 'TRAILING',136                'TRANSFORM', 'TYPE', 'UNDERLINE', 'UNIT', 'UNSIGNED',137                'UNSIGNED-INT', 'UNSIGNED-LONG', 'UNSIGNED-SHORT', 'UNTIL', 'UP',138                'UPDATE', 'UPON', 'USAGE', 'USING', 'VALUE', 'VALUES', 'VARYING',139                'WAIT', 'WHEN', 'WITH', 'WORDS', 'YYYYDDD', 'YYYYMMDD'),140                prefix=r'(^|(?<=[^\w\-]))', suffix=r'\s*($|(?=[^\w\-]))'),141             Keyword.Pseudo),142 143            # inactive reserved words144            (words((145                'ACTIVE-CLASS', 'ALIGNED', 'ANYCASE', 'ARITHMETIC', 'ATTRIBUTE',146                'B-AND', 'B-NOT', 'B-OR', 'B-XOR', 'BIT', 'BOOLEAN', 'CD', 'CENTER',147                'CF', 'CH', 'CHAIN', 'CLASS-ID', 'CLASSIFICATION', 'COMMUNICATION',148                'CONDITION', 'DATA-POINTER', 'DESTINATION', 'DISABLE', 'EC', 'EGI',149                'EMI', 'ENABLE', 'END-RECEIVE', 'ENTRY-CONVENTION', 'EO', 'ESI',150                'EXCEPTION-OBJECT', 'EXPANDS', 'FACTORY', 'FLOAT-BINARY-16',151                'FLOAT-BINARY-34', 'FLOAT-BINARY-7', 'FLOAT-DECIMAL-16',152                'FLOAT-DECIMAL-34', 'FLOAT-EXTENDED', 'FORMAT', 'FUNCTION-POINTER',153                'GET', 'GROUP-USAGE', 'IMPLEMENTS', 'INFINITY', 'INHERITS',154                'INTERFACE', 'INTERFACE-ID', 'INVOKE', 'LC_ALL', 'LC_COLLATE',155                'LC_CTYPE', 'LC_MESSAGES', 'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME',156                'LINE-COUNTER', 'MESSAGE', 'METHOD', 'METHOD-ID', 'NESTED', 'NONE',157                'NORMAL', 'OBJECT', 'OBJECT-REFERENCE', 'OPTIONS', 'OVERRIDE',158                'PAGE-COUNTER', 'PF', 'PH', 'PROPERTY', 'PROTOTYPE', 'PURGE',159                'QUEUE', 'RAISE', 'RAISING', 'RECEIVE', 'RELATION', 'REPLACE',160                'REPRESENTS-NOT-A-NUMBER', 'RESET', 'RESUME', 'RETRY', 'RF', 'RH',161                'SECONDS', 'SEGMENT', 'SELF', 'SEND', 'SOURCES', 'STATEMENT',162                'STEP', 'STRONG', 'SUB-QUEUE-1', 'SUB-QUEUE-2', 'SUB-QUEUE-3',163                'SUPER', 'SYMBOL', 'SYSTEM-DEFAULT', 'TABLE', 'TERMINAL', 'TEXT',164                'TYPEDEF', 'UCS-4', 'UNIVERSAL', 'USER-DEFAULT', 'UTF-16', 'UTF-8',165                'VAL-STATUS', 'VALID', 'VALIDATE', 'VALIDATE-STATUS'),166                   prefix=r'(^|(?<=[^\w\-]))', suffix=r'\s*($|(?=[^\w\-]))'),167             Error),168 169            # Data Types170            (r'(^|(?<=[^\w\-]))'171             r'(PIC\s+.+?(?=(\s|\.\s))|PICTURE\s+.+?(?=(\s|\.\s))|'172             r'(COMPUTATIONAL)(-[1-5X])?|(COMP)(-[1-5X])?|'173             r'BINARY-C-LONG|'174             r'BINARY-CHAR|BINARY-DOUBLE|BINARY-LONG|BINARY-SHORT|'175             r'BINARY)\s*($|(?=[^\w\-]))', Keyword.Type),176 177            # Operators178            (r'(\*\*|\*|\+|-|/|<=|>=|<|>|==|/=|=)', Operator),179 180            # (r'(::)', Keyword.Declaration),181 182            (r'([(),;:&%.])', Punctuation),183 184            # Intrinsics185            (r'(^|(?<=[^\w\-]))(ABS|ACOS|ANNUITY|ASIN|ATAN|BYTE-LENGTH|'186             r'CHAR|COMBINED-DATETIME|CONCATENATE|COS|CURRENT-DATE|'187             r'DATE-OF-INTEGER|DATE-TO-YYYYMMDD|DAY-OF-INTEGER|DAY-TO-YYYYDDD|'188             r'EXCEPTION-(?:FILE|LOCATION|STATEMENT|STATUS)|EXP10|EXP|E|'189             r'FACTORIAL|FRACTION-PART|INTEGER-OF-(?:DATE|DAY|PART)|INTEGER|'190             r'LENGTH|LOCALE-(?:DATE|TIME(?:-FROM-SECONDS)?)|LOG(?:10)?|'191             r'LOWER-CASE|MAX|MEAN|MEDIAN|MIDRANGE|MIN|MOD|NUMVAL(?:-C)?|'192             r'ORD(?:-MAX|-MIN)?|PI|PRESENT-VALUE|RANDOM|RANGE|REM|REVERSE|'193             r'SECONDS-FROM-FORMATTED-TIME|SECONDS-PAST-MIDNIGHT|SIGN|SIN|SQRT|'194             r'STANDARD-DEVIATION|STORED-CHAR-LENGTH|SUBSTITUTE(?:-CASE)?|'195             r'SUM|TAN|TEST-DATE-YYYYMMDD|TEST-DAY-YYYYDDD|TRIM|'196             r'UPPER-CASE|VARIANCE|WHEN-COMPILED|YEAR-TO-YYYY)\s*'197             r'($|(?=[^\w\-]))', Name.Function),198 199            # Booleans200            (r'(^|(?<=[^\w\-]))(true|false)\s*($|(?=[^\w\-]))', Name.Builtin),201            # Comparing Operators202            (r'(^|(?<=[^\w\-]))(equal|equals|ne|lt|le|gt|ge|'203             r'greater|less|than|not|and|or)\s*($|(?=[^\w\-]))', Operator.Word),204        ],205 206        # \"[^\"\n]*\"|\'[^\'\n]*\'207        'strings': [208            # apparently strings can be delimited by EOL if they are continued209            # in the next line210            (r'"[^"\n]*("|\n)', String.Double),211            (r"'[^'\n]*('|\n)", String.Single),212        ],213 214        'nums': [215            (r'\d+(\s*|\.$|$)', Number.Integer),216            (r'[+-]?\d*\.\d+(E[-+]?\d+)?', Number.Float),217            (r'[+-]?\d+\.\d*(E[-+]?\d+)?', Number.Float),218        ],219    }220 221 222class CobolFreeformatLexer(CobolLexer):223    """224    Lexer for Free format OpenCOBOL code.225    """226    name = 'COBOLFree'227    aliases = ['cobolfree']228    filenames = ['*.cbl', '*.CBL']229    mimetypes = []230    url = 'https://opencobol.add1tocobol.com'231    version_added = '1.6'232 233    flags = re.IGNORECASE | re.MULTILINE234 235    tokens = {236        'comment': [237            (r'(\*>.*\n|^\w*\*.*$)', Comment),238        ],239    }240 241 242class ABAPLexer(RegexLexer):243    """244    Lexer for ABAP, SAP's integrated language.245    """246    name = 'ABAP'247    aliases = ['abap']248    filenames = ['*.abap', '*.ABAP']249    mimetypes = ['text/x-abap']250    url = 'https://community.sap.com/topics/abap'251    version_added = '1.1'252 253    flags = re.IGNORECASE | re.MULTILINE254 255    tokens = {256        'common': [257            (r'\s+', Whitespace),258            (r'^\*.*$', Comment.Single),259            (r'\".*?\n', Comment.Single),260            (r'##\w+', Comment.Special),261        ],262        'variable-names': [263            (r'<\S+>', Name.Variable),264            (r'\w[\w~]*(?:(\[\])|->\*)?', Name.Variable),265        ],266        'root': [267            include('common'),268            # function calls269            (r'CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION)',270             Keyword),271            (r'(CALL\s+(?:DIALOG|SCREEN|SUBSCREEN|SELECTION-SCREEN|'272             r'TRANSACTION|TRANSFORMATION))\b',273             Keyword),274            (r'(FORM|PERFORM)(\s+)(\w+)',275             bygroups(Keyword, Whitespace, Name.Function)),276            (r'(PERFORM)(\s+)(\()(\w+)(\))',277             bygroups(Keyword, Whitespace, Punctuation, Name.Variable, Punctuation)),278            (r'(MODULE)(\s+)(\S+)(\s+)(INPUT|OUTPUT)',279             bygroups(Keyword, Whitespace, Name.Function, Whitespace, Keyword)),280 281            # method implementation282            (r'(METHOD)(\s+)([\w~]+)',283             bygroups(Keyword, Whitespace, Name.Function)),284            # method calls285            (r'(\s+)([\w\-]+)([=\-]>)([\w\-~]+)',286             bygroups(Whitespace, Name.Variable, Operator, Name.Function)),287            # call methodnames returning style288            (r'(?<=(=|-)>)([\w\-~]+)(?=\()', Name.Function),289 290            # text elements291            (r'(TEXT)(-)(\d{3})',292             bygroups(Keyword, Punctuation, Number.Integer)),293            (r'(TEXT)(-)(\w{3})',294             bygroups(Keyword, Punctuation, Name.Variable)),295 296            # keywords with dashes in them.297            # these need to be first, because for instance the -ID part298            # of MESSAGE-ID wouldn't get highlighted if MESSAGE was299            # first in the list of keywords.300            (r'(ADD-CORRESPONDING|AUTHORITY-CHECK|'301             r'CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|'302             r'DELETE-ADJACENT|DIVIDE-CORRESPONDING|'303             r'EDITOR-CALL|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|EXIT-COMMAND|'304             r'FIELD-GROUPS|FIELD-SYMBOLS|FIELD-SYMBOL|FUNCTION-POOL|'305             r'INTERFACE-POOL|INVERTED-DATE|'306             r'LOAD-OF-PROGRAM|LOG-POINT|'307             r'MESSAGE-ID|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|'308             r'NEW-LINE|NEW-PAGE|NEW-SECTION|NO-EXTENSION|'309             r'OUTPUT-LENGTH|PRINT-CONTROL|'310             r'SELECT-OPTIONS|START-OF-SELECTION|SUBTRACT-CORRESPONDING|'311             r'SYNTAX-CHECK|SYSTEM-EXCEPTIONS|'312             r'TYPE-POOL|TYPE-POOLS|NO-DISPLAY'313             r')\b', Keyword),314 315            # keyword kombinations316            (r'(?<![-\>])(CREATE\s+(PUBLIC|PRIVATE|DATA|OBJECT)|'317             r'(PUBLIC|PRIVATE|PROTECTED)\s+SECTION|'318             r'(TYPE|LIKE)\s+((LINE\s+OF|REF\s+TO|'319             r'(SORTED|STANDARD|HASHED)\s+TABLE\s+OF))?|'320             r'FROM\s+(DATABASE|MEMORY)|CALL\s+METHOD|'321             r'(GROUP|ORDER) BY|HAVING|SEPARATED BY|'322             r'GET\s+(BADI|BIT|CURSOR|DATASET|LOCALE|PARAMETER|'323             r'PF-STATUS|(PROPERTY|REFERENCE)\s+OF|'324             r'RUN\s+TIME|TIME\s+(STAMP)?)?|'325             r'SET\s+(BIT|BLANK\s+LINES|COUNTRY|CURSOR|DATASET|EXTENDED\s+CHECK|'326             r'HANDLER|HOLD\s+DATA|LANGUAGE|LEFT\s+SCROLL-BOUNDARY|'327             r'LOCALE|MARGIN|PARAMETER|PF-STATUS|PROPERTY\s+OF|'328             r'RUN\s+TIME\s+(ANALYZER|CLOCK\s+RESOLUTION)|SCREEN|'329             r'TITLEBAR|UPADTE\s+TASK\s+LOCAL|USER-COMMAND)|'330             r'CONVERT\s+((INVERTED-)?DATE|TIME|TIME\s+STAMP|TEXT)|'331             r'(CLOSE|OPEN)\s+(DATASET|CURSOR)|'332             r'(TO|FROM)\s+(DATA BUFFER|INTERNAL TABLE|MEMORY ID|'333             r'DATABASE|SHARED\s+(MEMORY|BUFFER))|'334             r'DESCRIBE\s+(DISTANCE\s+BETWEEN|FIELD|LIST|TABLE)|'335             r'FREE\s(MEMORY|OBJECT)?|'336             r'PROCESS\s+(BEFORE\s+OUTPUT|AFTER\s+INPUT|'337             r'ON\s+(VALUE-REQUEST|HELP-REQUEST))|'338             r'AT\s+(LINE-SELECTION|USER-COMMAND|END\s+OF|NEW)|'339             r'AT\s+SELECTION-SCREEN(\s+(ON(\s+(BLOCK|(HELP|VALUE)-REQUEST\s+FOR|'340             r'END\s+OF|RADIOBUTTON\s+GROUP))?|OUTPUT))?|'341             r'SELECTION-SCREEN:?\s+((BEGIN|END)\s+OF\s+((TABBED\s+)?BLOCK|LINE|'342             r'SCREEN)|COMMENT|FUNCTION\s+KEY|'343             r'INCLUDE\s+BLOCKS|POSITION|PUSHBUTTON|'344             r'SKIP|ULINE)|'345             r'LEAVE\s+(LIST-PROCESSING|PROGRAM|SCREEN|'346             r'TO LIST-PROCESSING|TO TRANSACTION)'347             r'(ENDING|STARTING)\s+AT|'348             r'FORMAT\s+(COLOR|INTENSIFIED|INVERSE|HOTSPOT|INPUT|FRAMES|RESET)|'349             r'AS\s+(CHECKBOX|SUBSCREEN|WINDOW)|'350             r'WITH\s+(((NON-)?UNIQUE)?\s+KEY|FRAME)|'351             r'(BEGIN|END)\s+OF|'352             r'DELETE(\s+ADJACENT\s+DUPLICATES\sFROM)?|'353             r'COMPARING(\s+ALL\s+FIELDS)?|'354             r'(INSERT|APPEND)(\s+INITIAL\s+LINE\s+(IN)?TO|\s+LINES\s+OF)?|'355             r'IN\s+((BYTE|CHARACTER)\s+MODE|PROGRAM)|'356             r'END-OF-(DEFINITION|PAGE|SELECTION)|'357             r'WITH\s+FRAME(\s+TITLE)|'358             r'(REPLACE|FIND)\s+((FIRST|ALL)\s+OCCURRENCES?\s+OF\s+)?(SUBSTRING|REGEX)?|'359             r'MATCH\s+(LENGTH|COUNT|LINE|OFFSET)|'360             r'(RESPECTING|IGNORING)\s+CASE|'361             r'IN\s+UPDATE\s+TASK|'362             r'(SOURCE|RESULT)\s+(XML)?|'363             r'REFERENCE\s+INTO|'364 365             # simple kombinations366             r'AND\s+(MARK|RETURN)|CLIENT\s+SPECIFIED|CORRESPONDING\s+FIELDS\s+OF|'367             r'IF\s+FOUND|FOR\s+EVENT|INHERITING\s+FROM|LEAVE\s+TO\s+SCREEN|'368             r'LOOP\s+AT\s+(SCREEN)?|LOWER\s+CASE|MATCHCODE\s+OBJECT|MODIF\s+ID|'369             r'MODIFY\s+SCREEN|NESTING\s+LEVEL|NO\s+INTERVALS|OF\s+STRUCTURE|'370             r'RADIOBUTTON\s+GROUP|RANGE\s+OF|REF\s+TO|SUPPRESS DIALOG|'371             r'TABLE\s+OF|UPPER\s+CASE|TRANSPORTING\s+NO\s+FIELDS|'372             r'VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE|COMMON\s+PART)\b', Keyword),373 374            # single word keywords.375            (r'(^|(?<=(\s|\.)))(ABBREVIATED|ABSTRACT|ADD|ALIASES|ALIGN|ALPHA|'376             r'ASSERT|AS|ASSIGN(ING)?|AT(\s+FIRST)?|'377             r'BACK|BLOCK|BREAK-POINT|'378             r'CASE|CAST|CATCH|CHANGING|CHECK|CLASS|CLEAR|COLLECT|COLOR|COMMIT|COND|CONV|'379             r'CREATE|COMMUNICATION|COMPONENTS?|COMPUTE|CONCATENATE|CONDENSE|'380             r'CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|COUNTRY|CURRENCY|'381             r'DATA|DATE|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|'382             r'DETAIL|DIRECTORY|DIVIDE|DO|DUMMY|'383             r'ELSE(IF)?|ENDAT|ENDCASE|ENDCATCH|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|'384             r'ENDIF|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|ENDWHILE|'385             r'ENHANCEMENT|EVENTS|EXACT|EXCEPTIONS?|EXIT|EXPONENT|EXPORT|EXPORTING|EXTRACT|'386             r'FETCH|FIELDS?|FOR|FORM|FORMAT|FREE|FROM|FUNCTION|'387             r'HIDE|'388             r'ID|IF|IMPORT|IMPLEMENTATION|IMPORTING|IN|INCLUDE|INCLUDING|'389             r'INDEX|INFOTYPES|INITIALIZATION|INTERFACE|INTERFACES|INTO|'390             r'LANGUAGE|LEAVE|LENGTH|LINES|LOAD|LOCAL|'391             r'JOIN|'392             r'KEY|'393             r'NEW|NEXT|'394             r'MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFIER|MODIFY|MOVE|MULTIPLY|'395             r'NODES|NUMBER|'396             r'OBLIGATORY|OBJECT|OF|OFF|ON|OTHERS|OVERLAY|'397             r'PACK|PAD|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|PF\d\d|'398             r'RAISE|RAISING|RANGES?|READ|RECEIVE|REDEFINITION|REFRESH|REJECT|REPORT|RESERVE|'399             r'REF|RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|REPLACE|'400             r'SCROLL|SEARCH|SELECT|SHIFT|SIGN|SINGLE|SIZE|SKIP|SORT|SPLIT|STATICS|STOP|'401             r'STYLE|SUBMATCHES|SUBMIT|SUBTRACT|SUM(?!\()|SUMMARY|SUMMING|SUPPLY|SWITCH|'402             r'TABLE|TABLES|TIMESTAMP|TIMES?|TIMEZONE|TITLE|\??TO|'403             r'TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|'404             r'ULINE|UNDER|UNPACK|UPDATE|USING|'405             r'VALUE|VALUES|VIA|VARYING|VARY|'406             r'WAIT|WHEN|WHERE|WIDTH|WHILE|WITH|WINDOW|WRITE|XSD|ZERO)\b', Keyword),407 408            # builtins409            (r'(abs|acos|asin|atan|'410             r'boolc|boolx|bit_set|'411             r'char_off|charlen|ceil|cmax|cmin|condense|contains|'412             r'contains_any_of|contains_any_not_of|concat_lines_of|cos|cosh|'413             r'count|count_any_of|count_any_not_of|'414             r'dbmaxlen|distance|'415             r'escape|exp|'416             r'find|find_end|find_any_of|find_any_not_of|floor|frac|from_mixed|'417             r'insert|'418             r'lines|log|log10|'419             r'match|matches|'420             r'nmax|nmin|numofchar|'421             r'repeat|replace|rescale|reverse|round|'422             r'segment|shift_left|shift_right|sign|sin|sinh|sqrt|strlen|'423             r'substring|substring_after|substring_from|substring_before|substring_to|'424             r'tan|tanh|to_upper|to_lower|to_mixed|translate|trunc|'425             r'xstrlen)(\()\b', bygroups(Name.Builtin, Punctuation)),426 427            (r'&[0-9]', Name),428            (r'[0-9]+', Number.Integer),429 430            # operators which look like variable names before431            # parsing variable names.432            (r'(?<=(\s|.))(AND|OR|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|'433             r'BYTE-CO|BYTE-CN|BYTE-CA|BYTE-NA|BYTE-CS|BYTE-NS|'434             r'IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b', Operator.Word),435 436            include('variable-names'),437 438            # standard operators after variable names,439            # because < and > are part of field symbols.440            (r'[?*<>=\-+&]', Operator),441            (r"'(''|[^'])*'", String.Single),442            (r"`([^`])*`", String.Single),443            (r"([|}])([^{}|]*?)([|{])",444             bygroups(Punctuation, String.Single, Punctuation)),445            (r'[/;:()\[\],.]', Punctuation),446            (r'(!)(\w+)', bygroups(Operator, Name)),447        ],448    }449 450 451class OpenEdgeLexer(RegexLexer):452    """453    Lexer for OpenEdge ABL (formerly Progress) source code.454    """455    name = 'OpenEdge ABL'456    aliases = ['openedge', 'abl', 'progress']457    filenames = ['*.p', '*.cls']458    mimetypes = ['text/x-openedge', 'application/x-openedge']459    url = 'https://www.progress.com/openedge/features/abl'460    version_added = '1.5'461 462    types = (r'(?i)(^|(?<=[^\w\-]))(CHARACTER|CHAR|CHARA|CHARAC|CHARACT|CHARACTE|'463             r'COM-HANDLE|DATE|DATETIME|DATETIME-TZ|'464             r'DECIMAL|DEC|DECI|DECIM|DECIMA|HANDLE|'465             r'INT64|INTEGER|INT|INTE|INTEG|INTEGE|'466             r'LOGICAL|LONGCHAR|MEMPTR|RAW|RECID|ROWID)\s*($|(?=[^\w\-]))')467 468    keywords = words(OPENEDGEKEYWORDS,469                     prefix=r'(?i)(^|(?<=[^\w\-]))',470                     suffix=r'\s*($|(?=[^\w\-]))')471 472    tokens = {473        'root': [474            (r'/\*', Comment.Multiline, 'comment'),475            (r'\{', Comment.Preproc, 'preprocessor'),476            (r'\s*&.*', Comment.Preproc),477            (r'0[xX][0-9a-fA-F]+[LlUu]*', Number.Hex),478            (r'(?i)(DEFINE|DEF|DEFI|DEFIN)\b', Keyword.Declaration),479            (types, Keyword.Type),480            (keywords, Name.Builtin),481            (r'"(\\\\|\\[^\\]|[^"\\])*"', String.Double),482            (r"'(\\\\|\\[^\\]|[^'\\])*'", String.Single),483            (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float),484            (r'[0-9]+', Number.Integer),485            (r'\s+', Whitespace),486            (r'[+*/=-]', Operator),487            (r'[.:()]', Punctuation),488            (r'.', Name.Variable),  # Lazy catch-all489        ],490        'comment': [491            (r'[^*/]', Comment.Multiline),492            (r'/\*', Comment.Multiline, '#push'),493            (r'\*/', Comment.Multiline, '#pop'),494            (r'[*/]', Comment.Multiline)495        ],496        'preprocessor': [497            (r'[^{}]', Comment.Preproc),498            (r'\{', Comment.Preproc, '#push'),499            (r'\}', Comment.Preproc, '#pop'),500        ],501    }502 503    def analyse_text(text):504        """Try to identify OpenEdge ABL based on a few common constructs."""505        result = 0506 507        if 'END.' in text:508            result += 0.05509 510        if 'END PROCEDURE.' in text:511            result += 0.05512 513        if 'ELSE DO:' in text:514            result += 0.05515 516        return result517 518 519class GoodDataCLLexer(RegexLexer):520    """521    Lexer for GoodData-CL script files.522    """523 524    name = 'GoodData-CL'525    aliases = ['gooddata-cl']526    filenames = ['*.gdc']527    mimetypes = ['text/x-gooddata-cl']528    url = 'https://github.com/gooddata/GoodData-CL'529    version_added = '1.4'530 531    flags = re.IGNORECASE532 533    # Syntax:534    # https://github.com/gooddata/GoodData-CL/raw/master/cli/src/main/resources/com/gooddata/processor/COMMANDS.txt535    tokens = {536        'root': [537            # Comments538            (r'#.*', Comment.Single),539            # Function call540            (r'[a-z]\w*', Name.Function),541            # Argument list542            (r'\(', Punctuation, 'args-list'),543            # Punctuation544            (r';', Punctuation),545            # Space is not significant546            (r'\s+', Text)547        ],548        'args-list': [549            (r'\)', Punctuation, '#pop'),550            (r',', Punctuation),551            (r'[a-z]\w*', Name.Variable),552            (r'=', Operator),553            (r'"', String, 'string-literal'),554            (r'[0-9]+(?:\.[0-9]+)?(?:e[+-]?[0-9]{1,3})?', Number),555            # Space is not significant556            (r'\s', Whitespace)557        ],558        'string-literal': [559            (r'\\[tnrfbae"\\]', String.Escape),560            (r'"', String, '#pop'),561            (r'[^\\"]+', String)562        ]563    }564 565 566class MaqlLexer(RegexLexer):567    """568    Lexer for GoodData MAQL scripts.569    """570 571    name = 'MAQL'572    aliases = ['maql']573    filenames = ['*.maql']574    mimetypes = ['text/x-gooddata-maql', 'application/x-gooddata-maql']575    url = 'https://help.gooddata.com/doc/enterprise/en/dashboards-and-insights/maql-analytical-query-language'576    version_added = '1.4'577 578    flags = re.IGNORECASE579    tokens = {580        'root': [581            # IDENTITY582            (r'IDENTIFIER\b', Name.Builtin),583            # IDENTIFIER584            (r'\{[^}]+\}', Name.Variable),585            # NUMBER586            (r'[0-9]+(?:\.[0-9]+)?(?:e[+-]?[0-9]{1,3})?', Number),587            # STRING588            (r'"', String, 'string-literal'),589            #  RELATION590            (r'\<\>|\!\=', Operator),591            (r'\=|\>\=|\>|\<\=|\<', Operator),592            # :=593            (r'\:\=', Operator),594            # OBJECT595            (r'\[[^]]+\]', Name.Variable.Class),596            # keywords597            (words((598                'DIMENSION', 'DIMENSIONS', 'BOTTOM', 'METRIC', 'COUNT', 'OTHER',599                'FACT', 'WITH', 'TOP', 'OR', 'ATTRIBUTE', 'CREATE', 'PARENT',600                'FALSE', 'ROW', 'ROWS', 'FROM', 'ALL', 'AS', 'PF', 'COLUMN',601                'COLUMNS', 'DEFINE', 'REPORT', 'LIMIT', 'TABLE', 'LIKE', 'AND',602                'BY', 'BETWEEN', 'EXCEPT', 'SELECT', 'MATCH', 'WHERE', 'TRUE',603                'FOR', 'IN', 'WITHOUT', 'FILTER', 'ALIAS', 'WHEN', 'NOT', 'ON',604                'KEYS', 'KEY', 'FULLSET', 'PRIMARY', 'LABELS', 'LABEL',605                'VISUAL', 'TITLE', 'DESCRIPTION', 'FOLDER', 'ALTER', 'DROP',606                'ADD', 'DATASET', 'DATATYPE', 'INT', 'BIGINT', 'DOUBLE', 'DATE',607                'VARCHAR', 'DECIMAL', 'SYNCHRONIZE', 'TYPE', 'DEFAULT', 'ORDER',608                'ASC', 'DESC', 'HYPERLINK', 'INCLUDE', 'TEMPLATE', 'MODIFY'),609                suffix=r'\b'),610             Keyword),611            # FUNCNAME612            (r'[a-z]\w*\b', Name.Function),613            # Comments614            (r'#.*', Comment.Single),615            # Punctuation616            (r'[,;()]', Punctuation),617            # Space is not significant618            (r'\s+', Whitespace)619        ],620        'string-literal': [621            (r'\\[tnrfbae"\\]', String.Escape),622            (r'"', String, '#pop'),623            (r'[^\\"]+', String)624        ],625    }626 
codekingpro/portable-devtools · Team Ai