...

Text file src/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xml

Documentation: github.com/alecthomas/chroma/v2/lexers/embedded

     1<lexer>
     2  <config>
     3    <name>ABAP</name>
     4    <alias>abap</alias>
     5    <filename>*.abap</filename>
     6    <filename>*.ABAP</filename>
     7    <mime_type>text/x-abap</mime_type>
     8    <case_insensitive>true</case_insensitive>
     9  </config>
    10  <rules>
    11    <state name="common">
    12      <rule pattern="\s+">
    13        <token type="Text"/>
    14      </rule>
    15      <rule pattern="^\*.*$">
    16        <token type="CommentSingle"/>
    17      </rule>
    18      <rule pattern="\&#34;.*?\n">
    19        <token type="CommentSingle"/>
    20      </rule>
    21      <rule pattern="##\w+">
    22        <token type="CommentSpecial"/>
    23      </rule>
    24    </state>
    25    <state name="variable-names">
    26      <rule pattern="&lt;\S+&gt;">
    27        <token type="NameVariable"/>
    28      </rule>
    29      <rule pattern="\w[\w~]*(?:(\[\])|-&gt;\*)?">
    30        <token type="NameVariable"/>
    31      </rule>
    32    </state>
    33    <state name="root">
    34      <rule>
    35        <include state="common"/>
    36      </rule>
    37      <rule pattern="CALL\s+(?:BADI|CUSTOMER-FUNCTION|FUNCTION)">
    38        <token type="Keyword"/>
    39      </rule>
    40      <rule pattern="(CALL\s+(?:DIALOG|SCREEN|SUBSCREEN|SELECTION-SCREEN|TRANSACTION|TRANSFORMATION))\b">
    41        <token type="Keyword"/>
    42      </rule>
    43      <rule pattern="(FORM|PERFORM)(\s+)(\w+)">
    44        <bygroups>
    45          <token type="Keyword"/>
    46          <token type="Text"/>
    47          <token type="NameFunction"/>
    48        </bygroups>
    49      </rule>
    50      <rule pattern="(PERFORM)(\s+)(\()(\w+)(\))">
    51        <bygroups>
    52          <token type="Keyword"/>
    53          <token type="Text"/>
    54          <token type="Punctuation"/>
    55          <token type="NameVariable"/>
    56          <token type="Punctuation"/>
    57        </bygroups>
    58      </rule>
    59      <rule pattern="(MODULE)(\s+)(\S+)(\s+)(INPUT|OUTPUT)">
    60        <bygroups>
    61          <token type="Keyword"/>
    62          <token type="Text"/>
    63          <token type="NameFunction"/>
    64          <token type="Text"/>
    65          <token type="Keyword"/>
    66        </bygroups>
    67      </rule>
    68      <rule pattern="(METHOD)(\s+)([\w~]+)">
    69        <bygroups>
    70          <token type="Keyword"/>
    71          <token type="Text"/>
    72          <token type="NameFunction"/>
    73        </bygroups>
    74      </rule>
    75      <rule pattern="(\s+)([\w\-]+)([=\-]&gt;)([\w\-~]+)">
    76        <bygroups>
    77          <token type="Text"/>
    78          <token type="NameVariable"/>
    79          <token type="Operator"/>
    80          <token type="NameFunction"/>
    81        </bygroups>
    82      </rule>
    83      <rule pattern="(?&lt;=(=|-)&gt;)([\w\-~]+)(?=\()">
    84        <token type="NameFunction"/>
    85      </rule>
    86      <rule pattern="(TEXT)(-)(\d{3})">
    87        <bygroups>
    88          <token type="Keyword"/>
    89          <token type="Punctuation"/>
    90          <token type="LiteralNumberInteger"/>
    91        </bygroups>
    92      </rule>
    93      <rule pattern="(TEXT)(-)(\w{3})">
    94        <bygroups>
    95          <token type="Keyword"/>
    96          <token type="Punctuation"/>
    97          <token type="NameVariable"/>
    98        </bygroups>
    99      </rule>
   100      <rule pattern="(ADD-CORRESPONDING|AUTHORITY-CHECK|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|DELETE-ADJACENT|DIVIDE-CORRESPONDING|EDITOR-CALL|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|EXIT-COMMAND|FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|INTERFACE-POOL|INVERTED-DATE|LOAD-OF-PROGRAM|LOG-POINT|MESSAGE-ID|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|NEW-PAGE|NEW-SECTION|NO-EXTENSION|OUTPUT-LENGTH|PRINT-CONTROL|SELECT-OPTIONS|START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYSTEM-EXCEPTIONS|TYPE-POOL|TYPE-POOLS|NO-DISPLAY)\b">
   101        <token type="Keyword"/>
   102      </rule>
   103      <rule pattern="(?&lt;![-\&gt;])(CREATE\s+(PUBLIC|PRIVATE|DATA|OBJECT)|(PUBLIC|PRIVATE|PROTECTED)\s+SECTION|(TYPE|LIKE)\s+((LINE\s+OF|REF\s+TO|(SORTED|STANDARD|HASHED)\s+TABLE\s+OF))?|FROM\s+(DATABASE|MEMORY)|CALL\s+METHOD|(GROUP|ORDER) BY|HAVING|SEPARATED BY|GET\s+(BADI|BIT|CURSOR|DATASET|LOCALE|PARAMETER|PF-STATUS|(PROPERTY|REFERENCE)\s+OF|RUN\s+TIME|TIME\s+(STAMP)?)?|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)|CONVERT\s+((INVERTED-)?DATE|TIME|TIME\s+STAMP|TEXT)|(CLOSE|OPEN)\s+(DATASET|CURSOR)|(TO|FROM)\s+(DATA BUFFER|INTERNAL TABLE|MEMORY ID|DATABASE|SHARED\s+(MEMORY|BUFFER))|DESCRIBE\s+(DISTANCE\s+BETWEEN|FIELD|LIST|TABLE)|FREE\s(MEMORY|OBJECT)?|PROCESS\s+(BEFORE\s+OUTPUT|AFTER\s+INPUT|ON\s+(VALUE-REQUEST|HELP-REQUEST))|AT\s+(LINE-SELECTION|USER-COMMAND|END\s+OF|NEW)|AT\s+SELECTION-SCREEN(\s+(ON(\s+(BLOCK|(HELP|VALUE)-REQUEST\s+FOR|END\s+OF|RADIOBUTTON\s+GROUP))?|OUTPUT))?|SELECTION-SCREEN:?\s+((BEGIN|END)\s+OF\s+((TABBED\s+)?BLOCK|LINE|SCREEN)|COMMENT|FUNCTION\s+KEY|INCLUDE\s+BLOCKS|POSITION|PUSHBUTTON|SKIP|ULINE)|LEAVE\s+(LIST-PROCESSING|PROGRAM|SCREEN|TO LIST-PROCESSING|TO TRANSACTION)(ENDING|STARTING)\s+AT|FORMAT\s+(COLOR|INTENSIFIED|INVERSE|HOTSPOT|INPUT|FRAMES|RESET)|AS\s+(CHECKBOX|SUBSCREEN|WINDOW)|WITH\s+(((NON-)?UNIQUE)?\s+KEY|FRAME)|(BEGIN|END)\s+OF|DELETE(\s+ADJACENT\s+DUPLICATES\sFROM)?|COMPARING(\s+ALL\s+FIELDS)?|(INSERT|APPEND)(\s+INITIAL\s+LINE\s+(IN)?TO|\s+LINES\s+OF)?|IN\s+((BYTE|CHARACTER)\s+MODE|PROGRAM)|END-OF-(DEFINITION|PAGE|SELECTION)|WITH\s+FRAME(\s+TITLE)|(REPLACE|FIND)\s+((FIRST|ALL)\s+OCCURRENCES?\s+OF\s+)?(SUBSTRING|REGEX)?|MATCH\s+(LENGTH|COUNT|LINE|OFFSET)|(RESPECTING|IGNORING)\s+CASE|IN\s+UPDATE\s+TASK|(SOURCE|RESULT)\s+(XML)?|REFERENCE\s+INTO|AND\s+(MARK|RETURN)|CLIENT\s+SPECIFIED|CORRESPONDING\s+FIELDS\s+OF|IF\s+FOUND|FOR\s+EVENT|INHERITING\s+FROM|LEAVE\s+TO\s+SCREEN|LOOP\s+AT\s+(SCREEN)?|LOWER\s+CASE|MATCHCODE\s+OBJECT|MODIF\s+ID|MODIFY\s+SCREEN|NESTING\s+LEVEL|NO\s+INTERVALS|OF\s+STRUCTURE|RADIOBUTTON\s+GROUP|RANGE\s+OF|REF\s+TO|SUPPRESS DIALOG|TABLE\s+OF|UPPER\s+CASE|TRANSPORTING\s+NO\s+FIELDS|VALUE\s+CHECK|VISIBLE\s+LENGTH|HEADER\s+LINE|COMMON\s+PART)\b">
   104        <token type="Keyword"/>
   105      </rule>
   106      <rule pattern="(^|(?&lt;=(\s|\.)))(ABBREVIATED|ABSTRACT|ADD|ALIASES|ALIGN|ALPHA|ASSERT|AS|ASSIGN(ING)?|AT(\s+FIRST)?|BACK|BLOCK|BREAK-POINT|CASE|CATCH|CHANGING|CHECK|CLASS|CLEAR|COLLECT|COLOR|COMMIT|CREATE|COMMUNICATION|COMPONENTS?|COMPUTE|CONCATENATE|CONDENSE|CONSTANTS|CONTEXTS|CONTINUE|CONTROLS|COUNTRY|CURRENCY|DATA|DATE|DECIMALS|DEFAULT|DEFINE|DEFINITION|DEFERRED|DEMAND|DETAIL|DIRECTORY|DIVIDE|DO|DUMMY|ELSE(IF)?|ENDAT|ENDCASE|ENDCATCH|ENDCLASS|ENDDO|ENDFORM|ENDFUNCTION|ENDIF|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDSELECT|ENDTRY|ENDWHILE|ENHANCEMENT|EVENTS|EXACT|EXCEPTIONS?|EXIT|EXPONENT|EXPORT|EXPORTING|EXTRACT|FETCH|FIELDS?|FOR|FORM|FORMAT|FREE|FROM|FUNCTION|HIDE|ID|IF|IMPORT|IMPLEMENTATION|IMPORTING|IN|INCLUDE|INCLUDING|INDEX|INFOTYPES|INITIALIZATION|INTERFACE|INTERFACES|INTO|LANGUAGE|LEAVE|LENGTH|LINES|LOAD|LOCAL|JOIN|KEY|NEXT|MAXIMUM|MESSAGE|METHOD[S]?|MINIMUM|MODULE|MODIFIER|MODIFY|MOVE|MULTIPLY|NODES|NUMBER|OBLIGATORY|OBJECT|OF|OFF|ON|OTHERS|OVERLAY|PACK|PAD|PARAMETERS|PERCENTAGE|POSITION|PROGRAM|PROVIDE|PUBLIC|PUT|PF\d\d|RAISE|RAISING|RANGES?|READ|RECEIVE|REDEFINITION|REFRESH|REJECT|REPORT|RESERVE|RESUME|RETRY|RETURN|RETURNING|RIGHT|ROLLBACK|REPLACE|SCROLL|SEARCH|SELECT|SHIFT|SIGN|SINGLE|SIZE|SKIP|SORT|SPLIT|STATICS|STOP|STYLE|SUBMATCHES|SUBMIT|SUBTRACT|SUM(?!\()|SUMMARY|SUMMING|SUPPLY|TABLE|TABLES|TIMESTAMP|TIMES?|TIMEZONE|TITLE|\??TO|TOP-OF-PAGE|TRANSFER|TRANSLATE|TRY|TYPES|ULINE|UNDER|UNPACK|UPDATE|USING|VALUE|VALUES|VIA|VARYING|VARY|WAIT|WHEN|WHERE|WIDTH|WHILE|WITH|WINDOW|WRITE|XSD|ZERO)\b">
   107        <token type="Keyword"/>
   108      </rule>
   109      <rule pattern="(abs|acos|asin|atan|boolc|boolx|bit_set|char_off|charlen|ceil|cmax|cmin|condense|contains|contains_any_of|contains_any_not_of|concat_lines_of|cos|cosh|count|count_any_of|count_any_not_of|dbmaxlen|distance|escape|exp|find|find_end|find_any_of|find_any_not_of|floor|frac|from_mixed|insert|lines|log|log10|match|matches|nmax|nmin|numofchar|repeat|replace|rescale|reverse|round|segment|shift_left|shift_right|sign|sin|sinh|sqrt|strlen|substring|substring_after|substring_from|substring_before|substring_to|tan|tanh|to_upper|to_lower|to_mixed|translate|trunc|xstrlen)(\()\b">
   110        <bygroups>
   111          <token type="NameBuiltin"/>
   112          <token type="Punctuation"/>
   113        </bygroups>
   114      </rule>
   115      <rule pattern="&amp;[0-9]">
   116        <token type="Name"/>
   117      </rule>
   118      <rule pattern="[0-9]+">
   119        <token type="LiteralNumberInteger"/>
   120      </rule>
   121      <rule pattern="(?&lt;=(\s|.))(AND|OR|EQ|NE|GT|LT|GE|LE|CO|CN|CA|NA|CS|NOT|NS|CP|NP|BYTE-CO|BYTE-CN|BYTE-CA|BYTE-NA|BYTE-CS|BYTE-NS|IS\s+(NOT\s+)?(INITIAL|ASSIGNED|REQUESTED|BOUND))\b">
   122        <token type="OperatorWord"/>
   123      </rule>
   124      <rule>
   125        <include state="variable-names"/>
   126      </rule>
   127      <rule pattern="[?*&lt;&gt;=\-+&amp;]">
   128        <token type="Operator"/>
   129      </rule>
   130      <rule pattern="&#39;(&#39;&#39;|[^&#39;])*&#39;">
   131        <token type="LiteralStringSingle"/>
   132      </rule>
   133      <rule pattern="`([^`])*`">
   134        <token type="LiteralStringSingle"/>
   135      </rule>
   136      <rule pattern="([|}])([^{}|]*?)([|{])">
   137        <bygroups>
   138          <token type="Punctuation"/>
   139          <token type="LiteralStringSingle"/>
   140          <token type="Punctuation"/>
   141        </bygroups>
   142      </rule>
   143      <rule pattern="[/;:()\[\],.]">
   144        <token type="Punctuation"/>
   145      </rule>
   146      <rule pattern="(!)(\w+)">
   147        <bygroups>
   148          <token type="Operator"/>
   149          <token type="Name"/>
   150        </bygroups>
   151      </rule>
   152    </state>
   153  </rules>
   154</lexer>

View as plain text