Pygments

generic syntax highlighter


Ticket #394: abap-lexer.diff

File abap-lexer.diff, 10.2 kB (added by adsworth, 13 months ago)
  • www/sieker_info/pygments/lexers/_mapping.py

    diff --git a/www/sieker_info/pygments/lexers/_mapping.py b/www/sieker_info/pygments/lexers/_mapping.py
    index 5e743c0..29ff09d 100644
    a b  
    1414""" 
    1515 
    1616LEXERS = { 
     17    'ABAPLexer': ('pygments.lexers.other', 'ABAP', ('abap',), ('*.abap',), ('text/x-abap',)), 
    1718    'ActionScript3Lexer': ('pygments.lexers.web', 'ActionScript 3', ('as3', 'actionscript3'), ('*.as',), ('application/x-actionscript', 'text/x-actionscript', 'text/actionscript')), 
    1819    'ActionScriptLexer': ('pygments.lexers.web', 'ActionScript', ('as', 'actionscript'), ('*.as',), ('application/x-actionscript', 'text/x-actionscript', 'text/actionscript')), 
    1920    'ApacheConfLexer': ('pygments.lexers.text', 'ApacheConf', ('apacheconf', 'aconf', 'apache'), ('.htaccess', 'apache.conf', 'apache2.conf'), ('text/x-apacheconf',)), 
  • www/sieker_info/pygments/lexers/other.py

    diff --git a/www/sieker_info/pygments/lexers/other.py b/www/sieker_info/pygments/lexers/other.py
    index 3f69689..6b079c8 100644
    a b  
    2323__all__ = ['SqlLexer', 'MySqlLexer', 'SqliteConsoleLexer', 'BrainfuckLexer', 
    2424           'BashLexer', 'BatchLexer', 'BefungeLexer', 'RedcodeLexer', 
    2525           'MOOCodeLexer', 'SmalltalkLexer', 'TcshLexer', 'LogtalkLexer', 
    26            'GnuplotLexer', 'PovrayLexer', 'AppleScriptLexer'] 
     26           'GnuplotLexer', 'PovrayLexer', 'AppleScriptLexer', 'ABAPLexer'] 
    2727 
    2828line_re  = re.compile('.*?\n') 
    2929 
     30class ABAPLexer(RegexLexer): 
     31    """ 
     32    Lexer for ABAP. SAP's integrated Language. 
     33    """ 
     34    name = 'ABAP' 
     35    aliases = ['abap'] 
     36    filenames = ['*.abap'] 
     37    mimetypes = ['text/x-abap'] 
     38 
     39    flags = re.IGNORECASE | re.MULTILINE 
     40 
     41    tokens = { 
     42        'common': [ 
     43            (r'\s+', Text), 
     44            (r'^\*.*$', Comment.Single), 
     45            (r'\".*?\n', Comment.Single), 
     46            ], 
     47        'variable-names': [ 
     48            (r'<[\S_]+>', Name.Variable), 
     49            (r'[\w][\w_~]*(?:(\[\])|->\*)?', Name.Variable), 
     50            ], 
     51        'root': [ 
     52            include('common'), 
     53            #function calls 
     54            (r'(CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION))(\s+)(\'?\S+\'?)', bygroups(Keyword, Text, Name.Function)), 
     55            (r'(CALL)(\s+)(DIALOG|SCREEN|SELECTION-SCREEN|TRANSACTION|TRANSFORMATION)\b', bygroups(Keyword, Text, Keyword)), 
     56            (r'(FORM|PERFORM)(\s+)([\w_]+)', bygroups(Keyword, Text, Name.Function)), 
     57            (r'(PERFORM)(\s+)(\()([\w_]+)(\))', bygroups(Keyword, Text, Punctuation, Name.Variable, Punctuation )), 
     58            # method implementation 
     59            (r'(METHOD)(\s+)([\w_~]+)', bygroups(Keyword, Text, Name.Function)), 
     60            # method calls 
     61            (r'(\s+)([\w_\-]+)([=\-]>)([\w_\-~]+)', bygroups(Text, Name.Variable, Operator, Name.Function)), 
     62            # call methodnames returning style 
     63            (r'(?<=(=|-)>)([\w_\-~]+)(?=\()', Name.Function), 
     64 
     65            (r'(AT)(\s+)(LINE-SELECTION|USER-COMMAND|END\s+OF|NEW)\b', bygroups(Keyword, Text, Keyword)), 
     66            (r'(CREATE)(\s+)(DATA|OBJECT)\b', bygroups(Keyword, Text, Keyword)), 
     67            (r'(CONVERT)(\s+)(DATE|TEXT|TIME STAMP)\b', bygroups(Keyword, Text, Keyword)), 
     68            (r'(CLOSE|OPEN)(\s+)(DATASET|CURSOR)\b', bygroups(Keyword, Text, Keyword)), 
     69            (r'(LEAVE)(\s+)(LIST-PROCESSING|PROGRAM|SCREEN|TO LIST-PROCESSING|TO TRANSACTION)\b', bygroups(Keyword, Text, Keyword)), 
     70 
     71            # keywords with dashes in them. 
     72            # these need to be first, because for instance the -ID part of MESSAGE-ID  
     73            # wouldn't get highlighted if MESSAGE was first in the list of keywords. 
     74            (r'(ADD-CORRESPONDING|AUTHORITY-CHECK|' 
     75             r'CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|' 
     76             r'DELETE-ADJACENT|DIVIDE-CORRESPONDING|' 
     77             r'EDITOR-CALL|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|' 
     78             r'FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|' 
     79             r'INTERFACE-POOL|INVERTED-DATE|' 
     80             r'LOAD-OF-PROGRAM|LOG-POINT|' 
     81             r'MESSAGE-ID|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|' 
     82             r'NEW-LINE|NEW-PAGE|NEW-SECTION|NO-EXTENSION|' 
     83             r'OUTPUT-LENGTH|PRINT-CONTROL|' 
     84             r'SELECT-OPTIONS|START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYSTEM-EXCEPTIONS|' 
     85             r'TYPE-POOL|TYPE-POOLS' 
     86             r')\b', Keyword), 
     87 
     88             # keyword kombinations  
     89            (r'CREATE\s+(PUBLIC|PRIVATE)|' 
     90             r'((PUBLIC|PRIVATE|PROTECTED)\s+SECTION|' 
     91             r'(TYPE|LIKE)(\s+(LINE\s+OF|REF\s+TO|(SORTED|STANDARD|HASHED)\s+TABLE\s+OF))?|' 
     92             r'FROM\s+(DATABASE|MEMORY)|CALL\s+METHOD|' 
     93             r'(GROUP|ORDER) BY|HAVING|SEPARATED BY|' 
     94             r'GET\s+(BADI|BIT|CURSOR|DATASET|LOCALE|PARAMETER|PF-STATUS|(PROPERTY|REFERENCE)\s+OF|RUN\s+TIME|TIME\s+(STEMP)?)?|' 
     95             r'SET\s+(BIT|BLANK\s+LINES|COUNTRY|CURSOR|DATASET|EXTENDED\s+CHECK|HANDLER|HOLD\s+DATA|LANGUAGE|LEFT\s+SCROLL-BOUNDARY|LOCALE|MARGIN|PARAMETER|PF-STATUS|PROPERTY\s+OF|RUN\s+TIME\s+(ANALYZER|CLOCK\s+RESOLUTION)|SCREEN|TITLEBAR|UPADTE\s+TASK\s+LOCAL|USER-COMMAND)|' 
     96             r'CONVERT\s+((INVERTED-)?DATE|TIME|TIME\s+STAMP)|' 
     97             r'(TO|FROM)\s+(DATA BUFFER|INTERNAL TABLE|MEMORY ID|DATABASE|SHARED\s+(MEMORY|BUFFER))|' 
     98             r'DESCRIBE\s+(DISTANCE\s+BETWEEN|FIELD|LIST|TABLE)|' 
     99             r'FREE\s(MEMORY|OBJECT)?|' 
     100             r'PROCESS\s+(BEFORE\s+OUTPUT|AFTER\s+INPUT|ON\s+(VALUE-REQUEST|HELP-REQUEST))|' 
     101             r'AT\s+SELECTION-SCREEN(\s+(ON(\s+(BLOCK|(HELP|VALUE)-REQUEST\s+FOR|END\s+OF|RADIOBUTTON\s+GROUP))?|OUTPUT))?|' 
     102             r'SELECTION-SCREEN\s+((BEGIN|END)\s+OF\s+((TABBED\s+)?BLOCK|LINE|SCREEN)|COMMENT|FUNCTION\s+KEY|INCLUDE\s+BLOCKS|POSITION|PUSHBUTTON|SKIP|ULINE)|' 
     103             r'(ENDING|STARTING)\s+AT|' 
     104             r'FORMAT\s+(COLOR|INTENSIFIED|INVERSE|HOTSPOT|INPUT|FRAMES|RESET)|' 
     105             r'AS\s+(CHECKBOX|SUBSCREEN|WINDOW)|' 
     106             r'WITH\s+((NON-)?UNIQUE)?\s+KEY|' 
     107             r'(BEGIN|END)\s+OF|' 
     108             r'DELETE(\s+ADJACENT\s+DUPLICATES\sFROM)?|' 
     109             r'COMPARING(\s+ALL\s+FIELDS)?|' 
     110             r'INSERT(\s+INITIAL\s+LINE\s+INTO|\s+LINES\s+OF)?|' 
     111             r'IN\s+((BYTE|CHARACTER)\s+MODE|PROGRAM)|' 
     112             r'END-OF-(DEFINITION|PAGE|SELECTION)|' 
     113             r'WITH\s+FRAME(\s+TITLE)|' 
     114 
     115             # simple kombinations 
     116              
     117             r'AND\s+(MARK|RETURN)|CLIENT\s+SPECIFIED|CORRESPONDING\s+FIELDS\s+OF|IF\s+FOUND|FOR\s+EVENT|INHERITING\s+FROM|' 
     118             r'LOOP\s+AT|LOWER\s+CASE|MATCHCODE\s+OBJECT|MODIF\s+ID|NESTING\s+LEVEL|NO\s+INTERVALS|OF\s+STRUCTURE|' 
     119             r'RADIOBUTTON\s+GROUP|RANGE\s+OF|REF\s+TO|SUPPRESS DIALOG|TABLE\s+OF|UPPER\s+CASE|TRANSPORTING\s+NO\s+FIELDS|' 
     120             r'VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE)\b', Keyword), 
     121 
     122            # single word keywords. 
     123            (r'(?<=(\s|\.))(ABBREVIATED|ADD|ALIASES|APPEND|ASSERT|ASSIGN(ING)?|AT(\s+FIRST)?|' 
     124             r'BACK|BLOCK|BREAK-POINT|' 
     125             r'CASE|CATCH|CHANGING|CHECK|CLASS|CLEAR|COLLECT|COMMIT|CREATE|' 
     126             r'COMMUNICATION|COMPONENTS?|COMPUTE|CONCATENATE|CONDENSE|CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|' 
     127             r'DATA|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|DETAIL|DIRECTORY|DIVIDE|DO|' 
     128             r'ELSE(IF)?|ENDAT|ENDCASE|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|ENDIF|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|' 
     129             r'ENHANCEMENT|EVENTS|EXCEPTIONS|EXIT|EXPORT|EXPORTING|EXTRACT|' 
     130             r'FETCH|FIELDS?|FIND|FOR|FORM|FORMAT|FREE|FROM|' 
     131             r'HIDE|' 
     132             r'ID|IF|IMPORT|IMPLEMENTATION|IMPORTING|IN|INCLUDE|INDEX|INFOTYPES|INITIALIZATION|INPUT|INTERFACE|INTERFACES|INTO|' 
     133             r'LENGTH|LINES|LOAD|LOCAL|' 
     134             r'JOIN|' 
     135             r'KEY|' 
     136             r'MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFY|MOVE|MULTIPLY|' 
     137             r'NODES|' 
     138             r'OBLIGATORY|OF|OFF|ON|OVERLAY|OUTPUT|' 
     139             r'PACK|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|' 
     140             r'RAISE|RAISING|RANGES|READ|RECEIVE|REFRESH|REJECT|REPORT|RESERVE|RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|' 
     141             r'SCROLL|SEARCH|SELECT|SHIFT|SINGLE|SKIP|SORT|SPLIT|STATICS|STOP|' 
     142             r'SUBMIT|SUBTRACT|SUM|SUMMARY|SUMMING|SUPPLY|' 
     143             r'TABLE|TABLES|TIMES|TITLE|TO|TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|' 
     144             r'ULINE|UNDER|UNPACK|UPDATE|USING|' 
     145             r'VALUE|VALUES|VIA|' 
     146             r'WAIT|WHEN|WHERE|WHILE|WITH|WINDOW|WRITE)\b', Keyword), 
     147 
     148             # builtins 
     149            (r'(abs|acos|asin|atan|' 
     150             r'boolc|boolx|bit_set|' 
     151             r'char_off|charlen|ceil|cmax|cmin|condense|contains|contains_any_of|contains_any_not_of|' 
     152             r'concat_lines_of|cos|cosh|count|count_any_of|count_any_not_of|' 
     153             r'dbmaxlen|distance|' 
     154             r'escape|exp|' 
     155             r'find|find_end|find_any_of|find_any_not_of|floor|frac|from_mixed|' 
     156             r'insert|' 
     157             r'lines|log|log10|' 
     158             r'match|matches|' 
     159             r'nmax|nmin|numofchar|' 
     160             r'repeat|replace|rescale|reverse|round|' 
     161             r'segment|shift_left|shift_right|sign|sin|sinh|sqrt|strlen|' 
     162             r'substring|substring_after|substring_from|substring_before|substring_to|' 
     163             r'tan|tanh|to_upper|to_lower|to_mixed|translate|trunc|' 
     164             r'xstrlen)(\()\b', bygroups(Name.Builtin, Punctuation)), 
     165 
     166            (r'&[0-9]', Name), 
     167            (r'[0-9]+', Number.Integer), 
     168            # operators which look like variable names before parsing variable names. 
     169            (r'(?<=(\s|.))(AND|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|' 
     170             r'BYTE-CO|BYTE-CN|BYTE-CA|BYTE-NA|BYTE-CS|BYTE-NS|' 
     171             r'IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b', Operator), 
     172              
     173            include('variable-names'), 
     174             
     175            # standard oparators after variable names, because < and > are part of field symbols. 
     176            (r'[?*<>=\-+]', Operator), 
     177            (r"'(''|[^'])*'", String.Single), 
     178            (r'[/;:()\[\],\.]', Punctuation) 
     179        ], 
     180    } 
    30181 
    31182class SqlLexer(RegexLexer): 
    32183    """