plugins/geshi/geshi/abap.php
changeset 3 f3e2bbbd2155
parent 2 9e3258dfae15
equal deleted inserted replaced
2:9e3258dfae15 3:f3e2bbbd2155
     1 <?php
     1 <?php
     2 /*************************************************************************************
     2 /*************************************************************************************
     3  * abap.php
     3  * abap.php
     4  * --------
     4  * --------
     5  * Author: Andres Picazo (andres@andrespicazo.com)
     5  * Author: Andres Picazo (andres@andrespicazo.com)
       
     6  * Contributors:
       
     7  *  - Sandra Rossi (sandra.rossi@gmail.com)
       
     8  *  - Jacob Laursen (jlu@kmd.dk)
     6  * Copyright: (c) 2007 Andres Picazo
     9  * Copyright: (c) 2007 Andres Picazo
     7  * Release Version: 1.0.8.2
    10  * Release Version: 1.0.8.4
     8  * Date Started: 2004/06/04
    11  * Date Started: 2004/06/04
     9  *
    12  *
    10  * ABAP language file for GeSHi.
    13  * ABAP language file for GeSHi.
    11  *
    14  *
       
    15  * Reference abap language documentation (abap 7.1) : http://help.sap.com/abapdocu/en/ABENABAP_INDEX.htm
       
    16  *
       
    17  * ABAP syntax is highly complex, several problems could not be addressed, see TODO below if you dare ;-)
       
    18  * Be aware that in ABAP language, keywords may be composed of several tokens,
       
    19  *    separated by one or more spaces or carriage returns
       
    20  *    (for example CONCATENATE 'hello' 'world' INTO string SEPARATED  BY ' ')
       
    21  *    it's why we must decode them with REGEXPS. As there are many keywords with several tokens,
       
    22  *    I had to create a separate section in the code to simplify the reading.
       
    23  * Be aware that some words may be highlighted several times like for "ref to data", which is first
       
    24  *    highlighted for "ref to data", then secondly for "ref to". It is very important to
       
    25  *    position "ref to" after "ref to data" otherwise "data" wouldn't be highlighted because
       
    26  *    of the previous highlight.
       
    27  * Control, declarative and other statements are assigned URLs to sap documentation website:
       
    28  *    http://help.sap.com/abapdocu/en/ABAP<statement_name>.htm
       
    29  *
    12  * CHANGES
    30  * CHANGES
    13  * -------
    31  * -------
       
    32  * 2009/02/25 (1.0.8.3)
       
    33  *   -  Some more rework of the language file
       
    34  * 2009/01/04 (1.0.8.2)
       
    35  *   -  Major Release, more than 1000 statements and keywords added = whole abap 7.1 (Sandra Rossi)
    14  * 2007/06/27 (1.0.0)
    36  * 2007/06/27 (1.0.0)
    15  *   -  First Release
    37  *   -  First Release
    16  *
    38  *
    17  * TODO
    39  * TODO
    18  * ----
    40  * ----
       
    41  *   - in DATA data TYPE type, 2nd "data" and 2nd "type" are highlighted with data
       
    42  *     style, but should be ignored. Same problem for all words!!! This is quite impossible to
       
    43  *     solve it as we should define syntaxes of all statements (huge effort!) and use a lex
       
    44  *     or something like that instead of regexp I guess.
       
    45  *   - Some words are considered as being statement names (report, tables, etc.) though they
       
    46  *     are used as keyword in some statements. For example: FORM xxxx TABLES itab. It was
       
    47  *     arbitrary decided to define them as statement instead of keyword, because it may be
       
    48  *     useful to have the URL to SAP help for some of them.
       
    49  *   - if a comment is between 2 words of a keyword (for example SEPARATED "comment \n BY),
       
    50  *     it is not considered as a keyword, but it should!
       
    51  *   - for statements like "READ DATASET", GeSHi does not allow to set URLs because these
       
    52  *     statements are determined by REGEXPS. For "READ DATASET", the URL should be
       
    53  *     ABAPREAD_DATASET.htm. If a technical solution is found, be careful : URLs
       
    54  *     are sometimes not valid because the URL does not exist. For example, for "AT NEW"
       
    55  *     statement, the URL should be ABAPAT_ITAB.htm (not ABAPAT_NEW.htm).
       
    56  *     There are many other exceptions.
       
    57  *     Note: for adding this functionality within your php program, you can execute this code:
       
    58  *       function add_urls_to_multi_tokens( $matches ) {
       
    59  *           $url = preg_replace( "/[ \n]+/" , "_" , $matches[3] );
       
    60  *           if( $url == $matches[3] ) return $matches[0] ;
       
    61  *           else return $matches[1]."<a href=\"http://help.sap.com/abapdocu/en/ABAP".strtoupper($url).".htm\">".$matches[3]."</a>".$matches[4];
       
    62  *           }
       
    63  *       $html = $geshi->parse_code();
       
    64  *       $html = preg_replace_callback( "£(zzz:(control|statement|data);\">)(.+?)(</span>)£s", "add_urls_to_multi_tokens", $html );
       
    65  *       echo $html;
       
    66  *   - Numbers followed by a dot terminating the statement are not properly recognized
    19  *
    67  *
    20  *************************************************************************************
    68  *************************************************************************************
    21  *
    69  *
    22  *     This file is part of GeSHi.
    70  *     This file is part of GeSHi.
    23  *
    71  *
    35  *   along with GeSHi; if not, write to the Free Software
    83  *   along with GeSHi; if not, write to the Free Software
    36  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    84  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    37  *
    85  *
    38  ************************************************************************************/
    86  ************************************************************************************/
    39 
    87 
    40 $language_data = array (
    88 $language_data = array(
    41     'LANG_NAME' => 'ABAP',
    89     'LANG_NAME' => 'ABAP',
    42     'COMMENT_SINGLE' => array(1 => '"', 2 => '*'),
    90     'COMMENT_SINGLE' => array(
       
    91         1 => '"'
       
    92         ),
    43     'COMMENT_MULTI' => array(),
    93     'COMMENT_MULTI' => array(),
       
    94     'COMMENT_REGEXP' => array(
       
    95         // lines beginning with star at 1st position are comments
       
    96         // (star anywhere else is not a comment, especially be careful with
       
    97         // "assign dref->* to <fs>" statement)
       
    98         2 => '/^\*.*?$/m'
       
    99         ),
    44     'CASE_KEYWORDS' => 0,
   100     'CASE_KEYWORDS' => 0,
    45     'QUOTEMARKS' => array("'"),
   101     'QUOTEMARKS' => array(
       
   102         1 => "'",
       
   103         2 => "`"
       
   104         ),
    46     'ESCAPE_CHAR' => '',
   105     'ESCAPE_CHAR' => '',
       
   106 
    47     'KEYWORDS' => array(
   107     'KEYWORDS' => array(
       
   108         //***********************************************
       
   109         // Section 2 : process sequences of several tokens
       
   110         //***********************************************
       
   111 
       
   112         7 => array(
       
   113             'at new',
       
   114             'at end of',
       
   115             'at first',
       
   116             'at last',
       
   117             'loop at',
       
   118             'loop at screen',
       
   119             ),
       
   120 
       
   121         8 => array(
       
   122             'private section',
       
   123             'protected section',
       
   124             'public section',
       
   125             'at line-selection',
       
   126             'at selection-screen',
       
   127             'at user-command',
       
   128             'assign component',
       
   129             'assign table field',
       
   130             'call badi',
       
   131             'call customer-function',
       
   132             'call customer subscreen',
       
   133             'call dialog',
       
   134             'call function',
       
   135             'call method',
       
   136             'call screen',
       
   137             'call selection-screen',
       
   138             'call transaction',
       
   139             'call transformation',
       
   140             'close cursor',
       
   141             'close dataset',
       
   142             'commit work',
       
   143             'convert date',
       
   144             'convert text',
       
   145             'convert time stamp',
       
   146             'create data',
       
   147             'create object',
       
   148             'delete dataset',
       
   149             'delete from',
       
   150             'describe distance',
       
   151             'describe field',
       
   152             'describe list',
       
   153             'describe table',
       
   154             'exec sql',
       
   155             'exit from sql',
       
   156             'exit from step-loop',
       
   157             'export dynpro',
       
   158             'export nametab',
       
   159             'free memory',
       
   160             'generate subroutine-pool',
       
   161             'get badi',
       
   162             'get bit',
       
   163             'get cursor',
       
   164             'get dataset',
       
   165             'get locale',
       
   166             'get parameter',
       
   167             'get pf-status',
       
   168             'get property',
       
   169             'get reference',
       
   170             'get run time',
       
   171             'get time',
       
   172             'get time stamp',
       
   173             'import directory',
       
   174             'insert report',
       
   175             'insert text-pool',
       
   176             'leave list-processing',
       
   177             'leave program',
       
   178             'leave screen',
       
   179             'leave to list-processing',
       
   180             'leave to transaction',
       
   181             'modify line',
       
   182             'modify screen',
       
   183             'move percentage',
       
   184             'open cursor',
       
   185             'open dataset',
       
   186             'raise event',
       
   187             'raise exception',
       
   188             'read dataset',
       
   189             'read line',
       
   190             'read report',
       
   191             'read table',
       
   192             'read textpool',
       
   193             'receive results from function',
       
   194             'refresh control',
       
   195             'rollback work',
       
   196             'set bit',
       
   197             'set blank lines',
       
   198             'set country',
       
   199             'set cursor',
       
   200             'set dataset',
       
   201             'set extended check',
       
   202             'set handler',
       
   203             'set hold data',
       
   204             'set language',
       
   205             'set left scroll-boundary',
       
   206             'set locale',
       
   207             'set margin',
       
   208             'set parameter',
       
   209             'set pf-status',
       
   210             'set property',
       
   211             'set run time analyzer',
       
   212             'set run time clock',
       
   213             'set screen',
       
   214             'set titlebar',
       
   215             'set update task',
       
   216             'set user-command',
       
   217             'suppress dialog',
       
   218             'truncate dataset',
       
   219             'wait until',
       
   220             'wait up to',
       
   221             ),
       
   222 
       
   223         9 => array(
       
   224             'accepting duplicate keys',
       
   225             'accepting padding',
       
   226             'accepting truncation',
       
   227             'according to',
       
   228             'actual length',
       
   229             'adjacent duplicates',
       
   230             'after input',
       
   231             'all blob columns',
       
   232             'all clob columns',
       
   233             'all fields',
       
   234             'all methods',
       
   235             'all other columns',
       
   236             'and mark',
       
   237             'and return to screen',
       
   238             'and return',
       
   239             'and skip first screen',
       
   240             'and wait',
       
   241             'any table',
       
   242             'appendage type',
       
   243             'archive mode',
       
   244             'archiving parameters',
       
   245             'area handle',
       
   246             'as checkbox',
       
   247             'as icon',
       
   248             'as line',
       
   249             'as listbox',
       
   250             'as person table',
       
   251             'as search patterns',
       
   252             'as separate unit',
       
   253             'as subscreen',
       
   254             'as symbol',
       
   255             'as text',
       
   256             'as window',
       
   257             'at cursor-selection',
       
   258             'at exit-command',
       
   259             'at next application statement',
       
   260             'at position',
       
   261 
       
   262             'backup into',
       
   263             'before output',
       
   264             'before unwind',
       
   265             'begin of block',
       
   266             'begin of common part',
       
   267             'begin of line',
       
   268             'begin of screen',
       
   269             'begin of tabbed block',
       
   270             'begin of version',
       
   271             'begin of',
       
   272             'big endian',
       
   273             'binary mode',
       
   274             'binary search',
       
   275             'by kernel module',
       
   276             'bypassing buffer',
       
   277 
       
   278             'client specified',
       
   279             'code page',
       
   280             'code page hint',
       
   281             'code page into',
       
   282             'color black',
       
   283             'color blue',
       
   284             'color green',
       
   285             'color pink',
       
   286             'color red',
       
   287             'color yellow',
       
   288             'compression off',
       
   289             'compression on',
       
   290             'connect to',
       
   291             'corresponding fields of table',
       
   292             'corresponding fields of',
       
   293             'cover page',
       
   294             'cover text',
       
   295             'create package',
       
   296             'create private',
       
   297             'create protected',
       
   298             'create public',
       
   299             'current position',
       
   300 
       
   301             'data buffer',
       
   302             'data values',
       
   303             'dataset expiration',
       
   304             'daylight saving time',
       
   305             'default key',
       
   306             'default program',
       
   307             'default screen',
       
   308             'defining database',
       
   309             'deleting leading',
       
   310             'deleting trailing',
       
   311             'directory entry',
       
   312             'display like',
       
   313             'display offset',
       
   314             'during line-selection',
       
   315             'dynamic selections',
       
   316 
       
   317             'edit mask',
       
   318             'end of block',
       
   319             'end of common part',
       
   320             'end of file',
       
   321             'end of line',
       
   322             'end of screen',
       
   323             'end of tabbed block',
       
   324             'end of version',
       
   325             'end of',
       
   326             'endian into',
       
   327             'ending at',
       
   328             'enhancement options into',
       
   329             'enhancement into',
       
   330             'environment time format',
       
   331             'execute procedure',
       
   332             'exporting list to memory',
       
   333             'extension type',
       
   334 
       
   335             'field format',
       
   336             'field selection',
       
   337             'field value into',
       
   338             'final methods',
       
   339             'first occurrence of',
       
   340             'fixed-point arithmetic',
       
   341             'for all entries',
       
   342             'for all instances',
       
   343             'for appending',
       
   344             'for columns',
       
   345             'for event of',
       
   346             'for field',
       
   347             'for high',
       
   348             'for input',
       
   349             'for lines',
       
   350             'for low',
       
   351             'for node',
       
   352             'for output',
       
   353             'for select',
       
   354             'for table',
       
   355             'for testing',
       
   356             'for update',
       
   357             'for user',
       
   358             'frame entry',
       
   359             'frame program from',
       
   360             'from code page',
       
   361             'from context',
       
   362             'from database',
       
   363             'from logfile id',
       
   364             'from number format',
       
   365             'from screen',
       
   366             'from table',
       
   367             'function key',
       
   368 
       
   369             'get connection',
       
   370             'global friends',
       
   371             'group by',
       
   372 
       
   373             'hashed table of',
       
   374             'hashed table',
       
   375 
       
   376             'if found',
       
   377             'ignoring case',
       
   378             'ignoring conversion errors',
       
   379             'ignoring structure boundaries',
       
   380             'implementations from',
       
   381             'in background',
       
   382             'in background task',
       
   383             'in background unit',
       
   384             'in binary mode',
       
   385             'in byte mode',
       
   386             'in char-to-hex mode',
       
   387             'in character mode',
       
   388             'in group',
       
   389             'in legacy binary mode',
       
   390             'in legacy text mode',
       
   391             'in program',
       
   392             'in remote task',
       
   393             'in text mode',
       
   394             'in table',
       
   395             'in update task',
       
   396             'include bound',
       
   397             'include into',
       
   398             'include program from',
       
   399             'include structure',
       
   400             'include type',
       
   401             'including gaps',
       
   402             'index table',
       
   403             'inheriting from',
       
   404             'init destination',
       
   405             'initial line of',
       
   406             'initial line',
       
   407             'initial size',
       
   408             'internal table',
       
   409             'into sortable code',
       
   410 
       
   411             'keep in spool',
       
   412             'keeping directory entry',
       
   413             'keeping logical unit of work',
       
   414             'keeping task',
       
   415             'keywords from',
       
   416 
       
   417             'left margin',
       
   418             'left outer',
       
   419             'levels into',
       
   420             'line format',
       
   421             'line into',
       
   422             'line of',
       
   423             'line page',
       
   424             'line value from',
       
   425             'line value into',
       
   426             'lines of',
       
   427             'list authority',
       
   428             'list dataset',
       
   429             'list name',
       
   430             'little endian',
       
   431             'lob handle for',
       
   432             'local friends',
       
   433             'locator for',
       
   434             'lower case',
       
   435 
       
   436             'main table field',
       
   437             'match count',
       
   438             'match length',
       
   439             'match line',
       
   440             'match offset',
       
   441             'matchcode object',
       
   442             'maximum length',
       
   443             'maximum width into',
       
   444             'memory id',
       
   445             'message into',
       
   446             'messages into',
       
   447             'modif id',
       
   448 
       
   449             'nesting level',
       
   450             'new list identification',
       
   451             'next cursor',
       
   452             'no database selection',
       
   453             'no dialog',
       
   454             'no end of line',
       
   455             'no fields',
       
   456             'no flush',
       
   457             'no intervals',
       
   458             'no intervals off',
       
   459             'no standard page heading',
       
   460             'no-extension off',
       
   461             'non-unique key',
       
   462             'non-unique sorted key',
       
   463             'not at end of mode',
       
   464             'number of lines',
       
   465             'number of pages',
       
   466 
       
   467             'object key',
       
   468             'obligatory off',
       
   469             'of current page',
       
   470             'of page',
       
   471             'of program',
       
   472             'offset into',
       
   473             'on block',
       
   474             'on commit',
       
   475             'on end of task',
       
   476             'on end of',
       
   477             'on exit-command',
       
   478             'on help-request for',
       
   479             'on radiobutton group',
       
   480             'on rollback',
       
   481             'on value-request for',
       
   482             'open for package',
       
   483             'option class-coding',
       
   484             'option class',
       
   485             'option coding',
       
   486             'option expand',
       
   487             'option syncpoints',
       
   488             'options from',
       
   489             'order by',
       
   490             'overflow into',
       
   491 
       
   492             'package section',
       
   493             'package size',
       
   494             'preferred parameter',
       
   495             'preserving identifier escaping',
       
   496             'primary key',
       
   497             'print off',
       
   498             'print on',
       
   499             'program from',
       
   500             'program type',
       
   501 
       
   502             'radiobutton groups',
       
   503             'radiobutton group',
       
   504             'range of',
       
   505             'reader for',
       
   506             'receive buffer',
       
   507             'reduced functionality',
       
   508             'ref to data',
       
   509             'ref to object',
       
   510             'ref to',
       
   511 
       
   512             'reference into',
       
   513             'renaming with suffix',
       
   514             'replacement character',
       
   515             'replacement count',
       
   516             'replacement length',
       
   517             'replacement line',
       
   518             'replacement offset',
       
   519             'respecting blanks',
       
   520             'respecting case',
       
   521             'result into',
       
   522             'risk level',
       
   523 
       
   524             'sap cover page',
       
   525             'search fkeq',
       
   526             'search fkge',
       
   527             'search gkeq',
       
   528             'search gkge',
       
   529             'section of',
       
   530             'send buffer',
       
   531             'separated by',
       
   532             'shared buffer',
       
   533             'shared memory',
       
   534             'shared memory enabled',
       
   535             'skipping byte-order mark',
       
   536             'sorted by',
       
   537             'sorted table of',
       
   538             'sorted table',
       
   539             'spool parameters',
       
   540             'standard table of',
       
   541             'standard table',
       
   542             'starting at',
       
   543             'starting new task',
       
   544             'statements into',
       
   545             'structure default',
       
   546             'structures into',
       
   547 
       
   548             'table field',
       
   549             'table of',
       
   550             'text mode',
       
   551             'time stamp',
       
   552             'time zone',
       
   553             'to code page',
       
   554             'to column',
       
   555             'to context',
       
   556             'to first page',
       
   557             'to last page',
       
   558             'to last line',
       
   559             'to line',
       
   560             'to lower case',
       
   561             'to number format',
       
   562             'to page',
       
   563             'to sap spool',
       
   564             'to upper case',
       
   565             'tokens into',
       
   566             'transporting no fields',
       
   567             'type tableview',
       
   568             'type tabstrip',
       
   569 
       
   570             'unicode enabling',
       
   571             'up to',
       
   572             'upper case',
       
   573             'using edit mask',
       
   574             'using key',
       
   575             'using no edit mask',
       
   576             'using screen',
       
   577             'using selection-screen',
       
   578             'using selection-set',
       
   579             'using selection-sets of program',
       
   580 
       
   581             'valid between',
       
   582             'valid from',
       
   583             'value check',
       
   584             'via job',
       
   585             'via selection-screen',
       
   586             'visible length',
       
   587 
       
   588             'whenever found',
       
   589             'with analysis',
       
   590             'with byte-order mark',
       
   591             'with comments',
       
   592             'with current switchstates',
       
   593             'with explicit enhancements',
       
   594             'with frame',
       
   595             'with free selections',
       
   596             'with further secondary keys',
       
   597             'with header line',
       
   598             'with hold',
       
   599             'with implicit enhancements',
       
   600             'with inactive enhancements',
       
   601             'with includes',
       
   602             'with key',
       
   603             'with linefeed',
       
   604             'with list tokenization',
       
   605             'with native linefeed',
       
   606             'with non-unique key',
       
   607             'with null',
       
   608             'with pragmas',
       
   609             'with precompiled headers',
       
   610             'with selection-table',
       
   611             'with smart linefeed',
       
   612             'with table key',
       
   613             'with test code',
       
   614             'with type-pools',
       
   615             'with unique key',
       
   616             'with unix linefeed',
       
   617             'with windows linefeed',
       
   618             'without further secondary keys',
       
   619             'without selection-screen',
       
   620             'without spool dynpro',
       
   621             'without trmac',
       
   622             'word into',
       
   623             'writer for'
       
   624             ),
       
   625 
       
   626         //**********************************************************
       
   627         // Other abap statements
       
   628         //**********************************************************
       
   629         3 => array(
       
   630             'add',
       
   631             'add-corresponding',
       
   632             'aliases',
       
   633             'append',
       
   634             'assign',
       
   635             'at',
       
   636             'authority-check',
       
   637 
       
   638             'break-point',
       
   639 
       
   640             'clear',
       
   641             'collect',
       
   642             'compute',
       
   643             'concatenate',
       
   644             'condense',
       
   645             'class',
       
   646             'class-events',
       
   647             'class-methods',
       
   648             'class-pool',
       
   649 
       
   650             'define',
       
   651             'delete',
       
   652             'demand',
       
   653             'detail',
       
   654             'divide',
       
   655             'divide-corresponding',
       
   656 
       
   657             'editor-call',
       
   658             'end-of-file',
       
   659             'end-enhancement-section',
       
   660             'end-of-definition',
       
   661             'end-of-page',
       
   662             'end-of-selection',
       
   663             'endclass',
       
   664             'endenhancement',
       
   665             'endexec',
       
   666             'endform',
       
   667             'endfunction',
       
   668             'endinterface',
       
   669             'endmethod',
       
   670             'endmodule',
       
   671             'endon',
       
   672             'endprovide',
       
   673             'endselect',
       
   674             'enhancement',
       
   675             'enhancement-point',
       
   676             'enhancement-section',
       
   677             'export',
       
   678             'extract',
       
   679             'events',
       
   680 
       
   681             'fetch',
       
   682             'field-groups',
       
   683             'find',
       
   684             'format',
       
   685             'form',
       
   686             'free',
       
   687             'function-pool',
       
   688             'function',
       
   689 
       
   690             'get',
       
   691 
       
   692             'hide',
       
   693 
       
   694             'import',
       
   695             'infotypes',
       
   696             'input',
       
   697             'insert',
       
   698             'include',
       
   699             'initialization',
       
   700             'interface',
       
   701             'interface-pool',
       
   702             'interfaces',
       
   703 
       
   704             'leave',
       
   705             'load-of-program',
       
   706             'log-point',
       
   707 
       
   708             'maximum',
       
   709             'message',
       
   710             'methods',
       
   711             'method',
       
   712             'minimum',
       
   713             'modify',
       
   714             'move',
       
   715             'move-corresponding',
       
   716             'multiply',
       
   717             'multiply-corresponding',
       
   718 
       
   719             'new-line',
       
   720             'new-page',
       
   721             'new-section',
       
   722 
       
   723             'overlay',
       
   724 
       
   725             'pack',
       
   726             'perform',
       
   727             'position',
       
   728             'print-control',
       
   729             'program',
       
   730             'provide',
       
   731             'put',
       
   732 
       
   733             'raise',
       
   734             'refresh',
       
   735             'reject',
       
   736             'replace',
       
   737             'report',
       
   738             'reserve',
       
   739 
       
   740             'scroll',
       
   741             'search',
       
   742             'select',
       
   743             'selection-screen',
       
   744             'shift',
       
   745             'skip',
       
   746             'sort',
       
   747             'split',
       
   748             'start-of-selection',
       
   749             'submit',
       
   750             'subtract',
       
   751             'subtract-corresponding',
       
   752             'sum',
       
   753             'summary',
       
   754             'summing',
       
   755             'supply',
       
   756             'syntax-check',
       
   757 
       
   758             'top-of-page',
       
   759             'transfer',
       
   760             'translate',
       
   761             'type-pool',
       
   762 
       
   763             'uline',
       
   764             'unpack',
       
   765             'update',
       
   766 
       
   767             'window',
       
   768             'write'
       
   769 
       
   770             ),
       
   771 
       
   772         //**********************************************************
       
   773         // keywords
       
   774         //**********************************************************
       
   775 
       
   776         4 => array(
       
   777             'abbreviated',
       
   778             'abstract',
       
   779             'accept',
       
   780             'acos',
       
   781             'activation',
       
   782             'alias',
       
   783             'align',
       
   784             'all',
       
   785             'allocate',
       
   786             'and',
       
   787             'assigned',
       
   788             'any',
       
   789             'appending',
       
   790             'area',
       
   791             'as',
       
   792             'ascending',
       
   793             'asin',
       
   794             'assigning',
       
   795             'atan',
       
   796             'attributes',
       
   797             'avg',
       
   798 
       
   799             'backward',
       
   800             'between',
       
   801             'bit-and',
       
   802             'bit-not',
       
   803             'bit-or',
       
   804             'bit-set',
       
   805             'bit-xor',
       
   806             'boolc',
       
   807             'boolx',
       
   808             'bound',
       
   809             'bt',
       
   810             'blocks',
       
   811             'bounds',
       
   812             'boxed',
       
   813             'by',
       
   814             'byte-ca',
       
   815             'byte-cn',
       
   816             'byte-co',
       
   817             'byte-cs',
       
   818             'byte-na',
       
   819             'byte-ns',
       
   820 
       
   821             'ca',
       
   822             'calling',
       
   823             'casting',
       
   824             'ceil',
       
   825             'center',
       
   826             'centered',
       
   827             'changing',
       
   828             'char_off',
       
   829             'charlen',
       
   830             'circular',
       
   831             'class_constructor',
       
   832             'client',
       
   833             'clike',
       
   834             'close',
       
   835             'cmax',
       
   836             'cmin',
       
   837             'cn',
       
   838             'cnt',
       
   839             'co',
       
   840             'col_background',
       
   841             'col_group',
       
   842             'col_heading',
       
   843             'col_key',
       
   844             'col_negative',
       
   845             'col_normal',
       
   846             'col_positive',
       
   847             'col_total',
       
   848             'color',
       
   849             'column',
       
   850             'comment',
       
   851             'comparing',
       
   852             'components',
       
   853             'condition',
       
   854             'context',
       
   855             'copies',
       
   856             'count',
       
   857             'country',
       
   858             'cpi',
       
   859             'creating',
       
   860             'critical',
       
   861             'concat_lines_of',
       
   862             'cos',
       
   863             'cosh',
       
   864             'count_any_not_of',
       
   865             'count_any_of',
       
   866             'cp',
       
   867             'cs',
       
   868             'csequence',
       
   869             'currency',
       
   870             'current',
       
   871             'cx_static_check',
       
   872             'cx_root',
       
   873             'cx_dynamic_check',
       
   874 
       
   875             'dangerous',
       
   876             'database',
       
   877             'datainfo',
       
   878             'date',
       
   879             'dbmaxlen',
       
   880             'dd/mm/yy',
       
   881             'dd/mm/yyyy',
       
   882             'ddmmyy',
       
   883             'deallocate',
       
   884             'decfloat',
       
   885             'decfloat16',
       
   886             'decfloat34',
       
   887             'decimals',
       
   888             'default',
       
   889             'deferred',
       
   890             'definition',
       
   891             'department',
       
   892             'descending',
       
   893             'destination',
       
   894             'disconnect',
       
   895             'display-mode',
       
   896             'distance',
       
   897             'distinct',
       
   898             'div',
       
   899             'dummy',
       
   900 
       
   901             'encoding',
       
   902             'end-lines',
       
   903             'engineering',
       
   904             'environment',
       
   905             'eq',
       
   906             'equiv',
       
   907             'error_message',
       
   908             'errormessage',
       
   909             'escape',
       
   910             'exact',
       
   911             'exception-table',
       
   912             'exceptions',
       
   913             'exclude',
       
   914             'excluding',
       
   915             'exists',
       
   916             'exp',
       
   917             'exponent',
       
   918             'exporting',
       
   919             'extended_monetary',
       
   920 
       
   921             'field',
       
   922             'filter-table',
       
   923             'filters',
       
   924             'filter',
       
   925             'final',
       
   926             'find_any_not_of',
       
   927             'find_any_of',
       
   928             'find_end',
       
   929             'floor',
       
   930             'first-line',
       
   931             'font',
       
   932             'forward',
       
   933             'for',
       
   934             'frac',
       
   935             'from_mixed',
       
   936             'friends',
       
   937             'from',
       
   938 
       
   939             'giving',
       
   940             'ge',
       
   941             'gt',
       
   942 
       
   943             'handle',
       
   944             'harmless',
       
   945             'having',
       
   946             'head-lines',
       
   947             'help-id',
       
   948             'help-request',
       
   949             'high',
       
   950             'hold',
       
   951             'hotspot',
       
   952 
       
   953             'id',
       
   954             'ids',
       
   955             'immediately',
       
   956             'implementation',
       
   957             'importing',
       
   958             'in',
       
   959             'initial',
       
   960             'incl',
       
   961             'including',
       
   962             'increment',
       
   963             'index',
       
   964             'index-line',
       
   965             'inner',
       
   966             'inout',
       
   967             'intensified',
       
   968             'into',
       
   969             'inverse',
       
   970             'is',
       
   971             'iso',
       
   972 
       
   973             'join',
       
   974 
       
   975             'key',
       
   976             'kind',
       
   977 
       
   978             'log10',
       
   979             'language',
       
   980             'late',
       
   981             'layout',
       
   982             'le',
       
   983             'lt',
       
   984             'left-justified',
       
   985             'leftplus',
       
   986             'leftspace',
       
   987             'left',
       
   988             'length',
       
   989             'level',
       
   990             'like',
       
   991             'line-count',
       
   992             'line-size',
       
   993             'lines',
       
   994             'line',
       
   995             'load',
       
   996             'long',
       
   997             'lower',
       
   998             'low',
       
   999             'lpi',
       
  1000 
       
  1001             'matches',
       
  1002             'match',
       
  1003             'mail',
       
  1004             'major-id',
       
  1005             'max',
       
  1006             'medium',
       
  1007             'memory',
       
  1008             'message-id',
       
  1009             'module',
       
  1010             'minor-id',
       
  1011             'min',
       
  1012             'mm/dd/yyyy',
       
  1013             'mm/dd/yy',
       
  1014             'mmddyy',
       
  1015             'mode',
       
  1016             'modifier',
       
  1017             'mod',
       
  1018             'monetary',
       
  1019 
       
  1020             'name',
       
  1021             'nb',
       
  1022             'ne',
       
  1023             'next',
       
  1024             'no-display',
       
  1025             'no-extension',
       
  1026             'no-gap',
       
  1027             'no-gaps',
       
  1028             'no-grouping',
       
  1029             'no-heading',
       
  1030             'no-scrolling',
       
  1031             'no-sign',
       
  1032             'no-title',
       
  1033             'no-topofpage',
       
  1034             'no-zero',
       
  1035             'nodes',
       
  1036             'non-unicode',
       
  1037             'no',
       
  1038             'number',
       
  1039             'nmax',
       
  1040             'nmin',
       
  1041             'not',
       
  1042             'null',
       
  1043             'numeric',
       
  1044             'numofchar',
       
  1045 
       
  1046             'o',
       
  1047             'objects',
       
  1048             'obligatory',
       
  1049             'occurs',
       
  1050             'offset',
       
  1051             'off',
       
  1052             'of',
       
  1053             'only',
       
  1054             'open',
       
  1055             'option',
       
  1056             'optional',
       
  1057             'options',
       
  1058             'output-length',
       
  1059             'output',
       
  1060             'out',
       
  1061             'on change of',
       
  1062             'or',
       
  1063             'others',
       
  1064 
       
  1065             'pad',
       
  1066             'page',
       
  1067             'pages',
       
  1068             'parameter-table',
       
  1069             'part',
       
  1070             'performing',
       
  1071             'pos_high',
       
  1072             'pos_low',
       
  1073             'priority',
       
  1074             'public',
       
  1075             'pushbutton',
       
  1076 
       
  1077             'queue-only',
       
  1078             'quickinfo',
       
  1079 
       
  1080             'raising',
       
  1081             'range',
       
  1082             'read-only',
       
  1083             'received',
       
  1084             'receiver',
       
  1085             'receiving',
       
  1086             'redefinition',
       
  1087             'reference',
       
  1088             'regex',
       
  1089             'replacing',
       
  1090             'reset',
       
  1091             'responsible',
       
  1092             'result',
       
  1093             'results',
       
  1094             'resumable',
       
  1095             'returncode',
       
  1096             'returning',
       
  1097             'right',
       
  1098             'right-specified',
       
  1099             'rightplus',
       
  1100             'rightspace',
       
  1101             'round',
       
  1102             'rows',
       
  1103             'repeat',
       
  1104             'requested',
       
  1105             'rescale',
       
  1106             'reverse',
       
  1107 
       
  1108             'scale_preserving',
       
  1109             'scale_preserving_scientific',
       
  1110             'scientific',
       
  1111             'scientific_with_leading_zero',
       
  1112             'screen',
       
  1113             'scrolling',
       
  1114             'seconds',
       
  1115             'segment',
       
  1116             'shift_left',
       
  1117             'shift_right',
       
  1118             'sign',
       
  1119             'simple',
       
  1120             'sin',
       
  1121             'sinh',
       
  1122             'short',
       
  1123             'shortdump-id',
       
  1124             'sign_as_postfix',
       
  1125             'single',
       
  1126             'size',
       
  1127             'some',
       
  1128             'source',
       
  1129             'space',
       
  1130             'spots',
       
  1131             'stable',
       
  1132             'state',
       
  1133             'static',
       
  1134             'statusinfo',
       
  1135             'sqrt',
       
  1136             'string',
       
  1137             'strlen',
       
  1138             'structure',
       
  1139             'style',
       
  1140             'subkey',
       
  1141             'submatches',
       
  1142             'substring',
       
  1143             'substring_after',
       
  1144             'substring_before',
       
  1145             'substring_from',
       
  1146             'substring_to',
       
  1147             'super',
       
  1148             'supplied',
       
  1149             'switch',
       
  1150 
       
  1151             'tan',
       
  1152             'tanh',
       
  1153             'table_line',
       
  1154             'table',
       
  1155             'tab',
       
  1156             'then',
       
  1157             'timestamp',
       
  1158             'times',
       
  1159             'time',
       
  1160             'timezone',
       
  1161             'title-lines',
       
  1162             'title',
       
  1163             'top-lines',
       
  1164             'to',
       
  1165             'to_lower',
       
  1166             'to_mixed',
       
  1167             'to_upper',
       
  1168             'trace-file',
       
  1169             'trace-table',
       
  1170             'transporting',
       
  1171             'trunc',
       
  1172             'type',
       
  1173 
       
  1174             'under',
       
  1175             'unique',
       
  1176             'unit',
       
  1177             'user-command',
       
  1178             'using',
       
  1179             'utf-8',
       
  1180 
       
  1181             'valid',
       
  1182             'value',
       
  1183             'value-request',
       
  1184             'values',
       
  1185             'vary',
       
  1186             'varying',
       
  1187             'version',
       
  1188 
       
  1189             'warning',
       
  1190             'where',
       
  1191             'width',
       
  1192             'with',
       
  1193             'word',
       
  1194             'with-heading',
       
  1195             'with-title',
       
  1196 
       
  1197             'xsequence',
       
  1198             'xstring',
       
  1199             'xstrlen',
       
  1200 
       
  1201             'yes',
       
  1202             'yymmdd',
       
  1203 
       
  1204             'z',
       
  1205             'zero'
       
  1206 
       
  1207             ),
       
  1208 
       
  1209         //**********************************************************
       
  1210         // screen statements
       
  1211         //**********************************************************
       
  1212 
       
  1213         5 => array(
       
  1214             'call subscreen',
       
  1215             'chain',
       
  1216             'endchain',
       
  1217             'on chain-input',
       
  1218             'on chain-request',
       
  1219             'on help-request',
       
  1220             'on input',
       
  1221             'on request',
       
  1222             'on value-request',
       
  1223             'process'
       
  1224             ),
       
  1225 
       
  1226         //**********************************************************
       
  1227         // internal statements
       
  1228         //**********************************************************
       
  1229 
       
  1230         6 => array(
       
  1231             'generate dynpro',
       
  1232             'generate report',
       
  1233             'import dynpro',
       
  1234             'import nametab',
       
  1235             'include methods',
       
  1236             'load report',
       
  1237             'scan abap-source',
       
  1238             'scan and check abap-source',
       
  1239             'syntax-check for dynpro',
       
  1240             'syntax-check for program',
       
  1241             'syntax-trace',
       
  1242             'system-call',
       
  1243             'system-exit',
       
  1244             'verification-message'
       
  1245             ),
       
  1246 
       
  1247         //**********************************************************
       
  1248         // Control statements
       
  1249         //**********************************************************
       
  1250 
    48         1 => array(
  1251         1 => array(
    49             'if', 'return', 'while', 'case', 'default',
  1252             'assert',
    50             'do', 'else', 'for', 'endif', 'elseif', 'eq',
  1253             'case',
    51             'not', 'and'
  1254             'catch',
    52             ),
  1255             'check',
       
  1256             'cleanup',
       
  1257             'continue',
       
  1258             'do',
       
  1259             'else',
       
  1260             'elseif',
       
  1261             'endat',
       
  1262             'endcase',
       
  1263             'endcatch',
       
  1264             'endif',
       
  1265             'enddo',
       
  1266             'endloop',
       
  1267             'endtry',
       
  1268             'endwhile',
       
  1269             'exit',
       
  1270             'if',
       
  1271             'loop',
       
  1272             'resume',
       
  1273             'retry',
       
  1274             'return',
       
  1275             'stop',
       
  1276             'try',
       
  1277             'when',
       
  1278             'while'
       
  1279 
       
  1280             ),
       
  1281 
       
  1282         //**********************************************************
       
  1283         // variable declaration statements
       
  1284         //**********************************************************
       
  1285 
    53         2 => array(
  1286         2 => array(
    54             'data', 'types', 'seletion-screen', 'parameters', 'field-symbols', 'extern', 'inline'
  1287             'class-data',
    55             ),
  1288             'controls',
    56         3 => array(
  1289             'constants',
    57             'report', 'write', 'append', 'select', 'endselect', 'call method', 'call function',
  1290             'data',
    58             'loop', 'endloop', 'raise', 'read table', 'concatenate', 'split', 'shift',
  1291             'field-symbols',
    59             'condense', 'describe', 'clear', 'endfunction', 'assign', 'create data', 'translate',
  1292             'fields',
    60             'continue', 'start-of-selection', 'at selection-screen', 'modify', 'call screen',
  1293             'local',
    61             'create object', 'perform', 'form', 'endform',
  1294             'parameters',
    62             'reuse_alv_block_list_init', 'zbcialv', 'include'
  1295             'ranges',
    63             ),
  1296             'select-options',
    64         4 => array(
  1297             'statics',
    65             'type ref to', 'type', 'begin of',  'end of', 'like', 'into',
  1298             'tables',
    66             'from', 'where', 'order by', 'with key', 'string', 'separated by',
  1299             'type-pools',
    67             'exporting', 'importing', 'to upper case', 'to', 'exceptions', 'tables',
  1300             'types'
    68             'using', 'changing'
  1301             )
    69             ),
       
    70         ),
  1302         ),
    71     'SYMBOLS' => array(
  1303     'SYMBOLS' => array(
    72         '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
  1304         0 => array(
       
  1305             '->*', '->', '=>',
       
  1306             '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '!', '%', '^', '&', ':', ',', '.'
       
  1307             ),
       
  1308         1 => array(
       
  1309             '>=', '<=', '<', '>', '='
       
  1310             ),
       
  1311         2 => array(
       
  1312             '?='
       
  1313             )
    73         ),
  1314         ),
    74     'CASE_SENSITIVE' => array(
  1315     'CASE_SENSITIVE' => array(
    75         GESHI_COMMENTS => false,
  1316         GESHI_COMMENTS => false,
    76         1 => false,
  1317         1 => false,
    77         2 => false,
  1318         2 => false,
    78         3 => false,
  1319         3 => false,
    79         4 => false,
  1320         4 => false,
       
  1321         5 => false,
       
  1322         6 => false,
       
  1323         7 => false,
       
  1324         8 => false,
       
  1325         9 => false,
    80         ),
  1326         ),
    81     'STYLES' => array(
  1327     'STYLES' => array(
    82         'KEYWORDS' => array(
  1328         'KEYWORDS' => array(
    83             1 => 'color: #b1b100;',
  1329             1 => 'color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;', //control statements
    84             2 => 'color: #000000; font-weight: bold;',
  1330             2 => 'color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;', //data statements
    85             3 => 'color: #000066;',
  1331             3 => 'color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;', //first token of other statements
    86             4 => 'color: #993333;'
  1332             4 => 'color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;', // next tokens of other statements ("keywords")
       
  1333             5 => 'color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;',
       
  1334             6 => 'color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;',
       
  1335             7 => 'color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;',
       
  1336             8 => 'color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;',
       
  1337             9 => 'color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;'
    87             ),
  1338             ),
    88         'COMMENTS' => array(
  1339         'COMMENTS' => array(
    89             1 => 'color: #808080; font-style: italic;',
  1340             1 => 'color: #808080; font-style: italic;',
    90             2 => 'color: #339933;',
  1341             2 => 'color: #339933;',
    91             'MULTI' => 'color: #808080; font-style: italic;'
  1342             'MULTI' => 'color: #808080; font-style: italic;'
    92             ),
  1343             ),
    93         'ESCAPE_CHAR' => array(
  1344         'ESCAPE_CHAR' => array(
    94             0 => 'color: #000099; font-weight: bold;'
  1345             0 => 'color: #000099; font-weight: bold;'
    95             ),
  1346             ),
    96         'BRACKETS' => array(
  1347         'BRACKETS' => array(
    97             0 => 'color: #66cc66;'
  1348             0 => 'color: #808080;'
    98             ),
  1349             ),
    99         'STRINGS' => array(
  1350         'STRINGS' => array(
   100             0 => 'color: #ff0000;'
  1351             0 => 'color: #4da619;'
   101             ),
  1352             ),
   102         'NUMBERS' => array(
  1353         'NUMBERS' => array(
   103             0 => 'color: #cc66cc;'
  1354             0 => 'color: #3399ff;'
   104             ),
  1355             ),
   105         'METHODS' => array(
  1356         'METHODS' => array(
   106             1 => 'color: #202020;',
  1357             1 => 'color: #202020;',
   107             2 => 'color: #202020;'
  1358             2 => 'color: #202020;'
   108             ),
  1359             ),
   109         'SYMBOLS' => array(
  1360         'SYMBOLS' => array(
   110             0 => 'color: #66cc66;'
  1361             0 => 'color: #808080;',
       
  1362             1 => 'color: #800080;',
       
  1363             2 => 'color: #0000ff;'
   111             ),
  1364             ),
   112         'REGEXPS' => array(
  1365         'REGEXPS' => array(
   113             ),
  1366             ),
   114         'SCRIPT' => array(
  1367         'SCRIPT' => array(
   115             )
  1368             )
   116         ),
  1369         ),
   117     'URLS' => array(
  1370     'URLS' => array(
   118         1 => '',
  1371         1 => 'http://help.sap.com/abapdocu/en/ABAP{FNAMEU}.htm',
   119         2 => '',
  1372         2 => 'http://help.sap.com/abapdocu/en/ABAP{FNAMEU}.htm',
   120         3 => 'http://sap4.com/wiki/index.php?title={FNAMEL}',
  1373         3 => 'http://help.sap.com/abapdocu/en/ABAP{FNAMEU}.htm',
   121         4 => ''
  1374         4 => '',
       
  1375         5 => '',
       
  1376         6 => '',
       
  1377         7 => '',
       
  1378         8 => '',
       
  1379         9 => ''
   122         ),
  1380         ),
   123     'OOLANG' => true,
  1381     'OOLANG' => true,
   124     'OBJECT_SPLITTERS' => array(
  1382     'OBJECT_SPLITTERS' => array(
   125         1 => '.',
  1383         1 => '-&gt;',
   126         2 => '::'
  1384         2 => '=&gt;'
   127         ),
  1385         ),
   128     'REGEXPS' => array(
  1386     'REGEXPS' => array(
   129         ),
  1387         ),
   130     'STRICT_MODE_APPLIES' => GESHI_NEVER,
  1388     'STRICT_MODE_APPLIES' => GESHI_NEVER,
   131     'SCRIPT_DELIMITERS' => array(
  1389     'SCRIPT_DELIMITERS' => array(
   132         ),
  1390         ),
   133     'HIGHLIGHT_STRICT_BLOCK' => array(
  1391     'HIGHLIGHT_STRICT_BLOCK' => array(
   134         )
  1392         ),
       
  1393     'PARSER_CONTROL' => array(
       
  1394         'KEYWORDS' => array(
       
  1395             7 => array(
       
  1396                 'SPACE_AS_WHITESPACE' => true
       
  1397                 ),
       
  1398             8 => array(
       
  1399                 'SPACE_AS_WHITESPACE' => true
       
  1400                 ),
       
  1401             9 => array(
       
  1402                 'SPACE_AS_WHITESPACE' => true
       
  1403                 )
       
  1404             )
       
  1405         ),
       
  1406     'TAB_WIDTH' => 4
   135 );
  1407 );
   136 
  1408 
   137 ?>
  1409 ?>