1<?php
2/******************************************************************************
3 * providex.php
4 * ----------
5 * Author: Jeff Wilder (jeff@coastallogix.com)
6 * Copyright:  (c) 2008 Coastal Logix (http://www.coastallogix.com)
7 * Release Version: 1.0.9.1
8 * Date Started: 2008/10/18
9 *
10 * ProvideX language file for GeSHi.
11 *
12 * CHANGES
13 * -------
14 * 2008/10/21 (1.0.0)
15 *  - First Release
16 *
17 * TODO
18 * -------------------------
19 * 1. Create a regexp for numeric global variables (ex: %VarName = 3)
20 * 2. Add standard object control properties
21 *
22 ******************************************************************************
23 *
24 *     This file is part of GeSHi.
25 *
26 *   GeSHi is free software; you can redistribute it and/or modify
27 *   it under the terms of the GNU General Public License as published by
28 *   the Free Software Foundation; either version 2 of the License, or
29 *   (at your option) any later version.
30 *
31 *   GeSHi is distributed in the hope that it will be useful,
32 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
33 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
34 *   GNU General Public License for more details.
35 *
36 *   You should have received a copy of the GNU General Public License
37 *   along with GeSHi; if not, write to the Free Software
38 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
39 *
40 *****************************************************************************/
41$language_data = array (
42    'LANG_NAME' => 'ProvideX',
43    'COMMENT_SINGLE' => array(1 => '!'),
44    'COMMENT_MULTI' => array('/*' => '*/'),
45    'COMMENT_REGEXP' => array(
46        // Single-Line Comments using REM command
47        2 => "/\bREM\b.*?$/i"
48        ),
49    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
50    'QUOTEMARKS' => array('"'),
51    'ESCAPE_CHAR' => '',
52    'KEYWORDS' => array(
53        1 => array(
54            // Directives
55            '*break', '*continue', '*end', '*escape', '*next', '*proceed',
56            '*retry', '*return', '*same', 'accept', 'add index', 'addr',
57            'auto', 'begin', 'break', 'button', 'bye', 'call', 'case',
58            'chart', 'check_box', 'class', 'clear', 'clip_board', 'close',
59            'continue', 'control', 'create required', 'create table',
60            'cwdir', 'data', 'day_format', 'def', 'default', 'defctl',
61            'defprt', 'deftty', 'delete required', 'dictionary', 'dim', 'direct',
62            'directory', 'disable', 'drop', 'drop_box', 'dump', 'edit',
63            'else', 'enable', 'end switch', 'end', 'end_if', 'endtrace',
64            'enter', 'erase', 'error_handler', 'escape', 'event', 'execute',
65            'exit', 'exitto', 'extract', 'file', 'find', 'floating point',
66            'for', 'function', 'get_file_box', 'gosub', 'goto', 'grid',
67            'h_scrollbar', 'hide', 'if', 'index', 'indexed', 'input',
68            'insert', 'invoke', 'iolist', 'keyed', 'let', 'like',
69            'line_switch', 'list', 'list_box', 'load', 'local', 'lock',
70            'long_form', 'menu_bar', 'merge', 'message_lib', 'mnemonic',
71            'msgbox', 'multi_line', 'multi_media', 'next', 'object', 'obtain',
72            'on', 'open', 'password', 'perform', 'pop', 'popup_menu',
73            'precision', 'prefix', 'preinput', 'print', 'process', 'program',
74            'property', 'purge', 'quit', 'radio_button', 'randomize',
75            'read', 'record', 'redim', 'refile', 'release', 'rem', 'remove',
76            'rename', 'renumber', 'repeat', 'reset', 'restore', 'retry',
77            'return', 'round', 'run', 'save', 'select', 'serial', 'server',
78            'set_focus', 'set_nbf', 'set_param', 'setctl', 'setday', 'setdev',
79            'setdrive', 'seterr', 'setesc', 'setfid', 'setmouse', 'settime',
80            'settrace', 'short_form', 'show', 'sort', 'start', 'static',
81            'step', 'stop', 'switch', 'system_help', 'system_jrnl', 'table',
82            'then', 'to', 'translate', 'tristate_box', 'unlock', 'until',
83            'update', 'user_lex', 'v_scrollbar', 'vardrop_box', 'varlist_box',
84            'via', 'video_palette', 'wait', 'wend', 'while', 'winprt_setup',
85            'with', 'write'
86            ),
87        2 => array(
88            // System Functions
89            '@x', '@y', 'abs', 'acs', 'and', 'arg', 'asc', 'asn', 'ath',
90            'atn', 'bin', 'bsz', 'chg', 'chr', 'cmp', 'cos', 'cpl',
91            'crc', 'cse', 'ctl', 'cvs', 'dec', 'dir', 'dll', 'dsk',
92            'dte', 'env', 'ept', 'err', 'evn', 'evs', 'exp', 'ffn',
93            'fib', 'fid', 'fin', 'fpt', 'gap', 'gbl', 'gep', 'hsa',
94            'hsh', 'hta', 'hwn', 'i3e', 'ind', 'int', 'iol', 'ior',
95            'jul', 'jst', 'kec', 'kef', 'kel', 'ken', 'kep', 'key',
96            'kgn', 'lcs', 'len', 'lno', 'log', 'lrc', 'lst', 'max',
97            'mem', 'mid', 'min', 'mnm', 'mod', 'msg', 'msk', 'mxc',
98            'mxl', 'new', 'not', 'nul', 'num', 'obj', 'opt', 'pad',
99            'pck', 'pfx', 'pgm', 'pos', 'prc', 'prm', 'pth', 'pub',
100            'rcd', 'rdx', 'rec', 'ref', 'rnd', 'rno', 'sep', 'sgn',
101            'sin', 'sqr', 'srt', 'ssz', 'stk', 'stp', 'str', 'sub',
102            'swp', 'sys', 'tan', 'tbl', 'tcb', 'tmr', 'trx', 'tsk',
103            'txh', 'txw', 'ucp', 'ucs', 'upk', 'vin', 'vis', 'xeq',
104            'xfa', 'xor', '_obj'
105            ),
106        3 => array(
107            // System Variables
108            // Vars that are duplicates of functions
109            // 'ctl', 'err', 'pfx', 'prm', 'rnd', 'sep', 'sys',
110            'bkg', 'chn', 'day', 'dlm', 'dsz', 'eom', 'ers', 'esc',
111            'gfn', 'gid', 'hfn', 'hlp', 'hwd', 'lfa', 'lfo', 'lip',
112            'lpg', 'lwd', 'mse', 'msl', 'nar', 'nid', 'pgn', 'psz',
113            'quo', 'ret', 'sid', 'ssn', 'tim', 'tme', 'tms', 'tsm',
114            'uid', 'unt', 'who'
115
116            ),
117        4 => array(
118            // Nomads Variables
119            '%Flmaint_Lib$', '%Flmaint_Msg$', '%Nomads_Activation_Ok',
120            '%Nomads_Auto_Qry', '%Nomads_Disable_Debug',
121            '%Nomads_Disable_Trace', '%Nomads_Fkey_Handler$',
122            '%Nomads_Fkey_Tbl$', '%Nomads_Notest', '%Nomads_Onexit$',
123            '%Nomads_Post_Display', '%Nomads_Pre_Display$',
124            '%Nomads_Process$', '%Nomads_Trace_File$',
125            '%Nomad_Actv_Folder_Colors$', '%Nomad_Automation_Enabled',
126            '%Nomad_Auto_Close', '%Nomad_Center_Wdw', '%Nomad_Concurrent_Wdw',
127            '%Nomad_Custom_Define', '%Nomad_Custom_Dir$',
128            '%Nomad_Custom_Genmtc', '%Nomad_Custom_Skip_Definition',
129            '%Nomad_Def_Sfx$', '%Nomad_Enter_Tab', '%Nomad_Esc_Sel',
130            '%Nomad_Isjavx', '%Nomad_Iswindx', '%Nomad_Iswindx$',
131            '%Nomad_Menu$', '%Nomad_Menu_Leftedge_Clr$',
132            '%Nomad_Menu_Textbackground_Clr$', '%Nomad_Mln_Sep$',
133            '%Nomad_Msgmnt$', '%Nomad_Noplusw', '%Nomad_No_Customize',
134            '%Nomad_Object_Persistence', '%Nomad_Object_Resize',
135            '%Nomad_Open_Load', '%Nomad_Override_Font$',
136            '%Nomad_Palette_Loaded', '%Nomad_Panel_Info_Force',
137            '%Nomad_Panel_Info_Prog$', '%Nomad_Pnl_Def_Colour$',
138            '%Nomad_Pnl_Def_Font$', '%Nomad_Prg_Cache', '%Nomad_Qry_Attr$',
139            '%Nomad_Qry_Btn$', '%Nomad_Qry_Clear_Start', '%Nomad_Qry_Tip$',
140            '%Nomad_Qry_Wide', '%Nomad_Query_Clear_Status', '%Nomad_Query_Kno',
141            '%Nomad_Query_No_Gray', '%Nomad_Query_Odb_Ignore',
142            '%Nomad_Query_Retkno', '%Nomad_Query_Sbar_Max',
143            '%Nomad_Relative_Wdw', '%Nomad_Save_Qry_Path', '%Nomad_Script_Fn',
144            '%Nomad_Script_Log', '%Nomad_Script_Wdw',
145            '%Nomad_Skip_Change_Logic', '%Nomad_Skip_Onselect_Logic',
146            '%Nomad_Stk$', '%Nomad_Tab_Dir', '%Nomad_Timeout',
147            '%Nomad_Turbo_Off', '%Nomad_Visual_Effect',
148            '%Nomad_Visual_Override', '%Nomad_Win_Ver', '%Nomad_Xchar',
149            '%Nomad_Xmax', '%Nomad_Ychar', '%Nomad_Ymax', '%Scr_Def_Attr$',
150            '%Scr_Def_H_Fl$', '%Scr_Def_H_Id$', '%Scr_Lib', '%Scr_Lib$',
151            '%Z__Usr_Sec$', 'Alternate_Panel$', 'Alternate_Panel_Type$',
152            'Arg_1$', 'Arg_10$', 'Arg_11$', 'Arg_12$', 'Arg_13$', 'Arg_14$',
153            'Arg_15$', 'Arg_16$', 'Arg_17$', 'Arg_18$', 'Arg_19$', 'Arg_2$',
154            'Arg_20$', 'Arg_3$', 'Arg_4$', 'Arg_5$', 'Arg_6$', 'Arg_7$',
155            'Arg_8$', 'Arg_9$', 'Change_Flg', 'Cmd_Str$', 'Default_Prog$',
156            'Disp_Cmd$', 'Entire_Record$', 'Exit_Cmd$', 'Fldr_Default_Prog$',
157            'Folder_Id$', 'Id', 'Id$', 'Ignore_Exit', 'Initialize_Flg',
158            'Init_Text$', 'Init_Val$', 'Main_Scrn_K$', 'Mnu_Ln$',
159            'Next_Folder', 'Next_Id', 'Next_Id$', 'No_Flush', 'Prime_Key$',
160            'Prior_Val', 'Prior_Val$', 'Qry_Val$', 'Refresh_Flg',
161            'Replacement_Folder$', 'Replacement_Lib$', 'Replacement_Scrn$',
162            'Scrn_Id$', 'Scrn_K$', 'Scrn_Lib$', 'Tab_Table$', '_Eom$'
163            ),
164        5 => array(
165            // Mnemonics
166            "'!w'", "'*c'", "'*h'", "'*i'", "'*o'", "'*r'", "'*x'",
167            "'+b'", "'+d'", "'+e'", "'+f'", "'+i'", "'+n'",
168            "'+p'", "'+s'", "'+t'", "'+u'", "'+v'", "'+w'", "'+x'",
169            "'+z'", "'-b'", "'-d'", "'-e'", "'-f'", "'-i'",
170            "'-n'", "'-p'", "'-s'", "'-t'", "'-u'", "'-v'", "'-w'",
171            "'-x'", "'-z'", "'2d'", "'3d'", "'4d'", "'@@'", "'ab'",
172            "'arc'", "'at'", "'backgr'", "'bb'", "'be'", "'beep'",
173            "'bg'", "'bi'", "'bj'", "'bk'", "'black'", "'blue'",
174            "'bm'", "'bo'", "'box'", "'br'", "'bs'", "'bt'", "'bu'",
175            "'bw'", "'bx'", "'caption'", "'ce'", "'cf'", "'ch'",
176            "'ci'", "'circle'", "'cl'", "'colour'", "'cp'", "'cpi'",
177            "'cr'", "'cs'", "'cursor'", "'cyan''_cyan'", "'dc'",
178            "'default'", "'df'", "'dialogue'", "'dn'", "'do'",
179            "'drop'", "'eb'", "'ee'", "'ef'", "'eg'", "'ei'", "'ej'",
180            "'el'", "'em'", "'eo'", "'ep'", "'er'", "'es'", "'et'",
181            "'eu'", "'ew'", "'ff'", "'fill'", "'fl'", "'font'",
182            "'frame'", "'gd'", "'ge'", "'gf'", "'goto'", "'green'",
183            "'gs'", "'hide'", "'ic'", "'image'", "'jc'",
184            "'jd'", "'jl'", "'jn'", "'jr'", "'js'", "'l6'", "'l8'",
185            "'lc'", "'ld'", "'lf'", "'li'", "'line'", "'lm'",
186            "'lpi'", "'lt'", "'magenta'", "'maxsize'", "'me'",
187            "'message'", "'minsize'", "'mn'", "'mode'",
188            "'move'", "'mp'", "'ms'", "'ni'", "'offset'", "'option'",
189            "'pe'", "'pen'", "'picture'", "'pie'", "'pm'", "'polygon'",
190            "'pop'", "'ps'", "'push'", "'rb'", "'rc'", "'rectangle'",
191            "'red'", "'rl'", "'rm'", "'rp'", "'rs'", "'rt'", "'sb'",
192            "'scroll'", "'sd'", "'se'", "'sf'", "'show'", "'size'",
193            "'sl'", "'sn'", "'sp'", "'sr'", "'swap'", "'sx'", "'text'",
194            "'textwdw'", "'tr'", "'tw'", "'uc'", "'up'", "'vt'", "'wa'",
195            "'wc'", "'wd'", "'wg'", "'white'", "'window'", "'wm'",
196            "'wp'", "'wr'", "'wrap'", "'ws'", "'wx'", "'xp'", "'yellow'",
197            "'zx'", "'_black'", "'_blue'", "'_colour'", "'_green'",
198            "'_magenta'", "'_red'", "'_white'", "'_yellow'"
199            ),
200        ),
201    'SYMBOLS' => array(
202        0 => array('+', '-', '*', '/', '^', '|'),
203        1 => array('++', '--', '+=', '-=', '*=', '/=', '^=', '|='),
204        2 => array('&lt;', '&gt;', '='),
205        3 => array('(', ')', '[', ']', '{', '}'),
206        4 => array(',', '@', ';', '\\')
207        ),
208    'CASE_SENSITIVE' => array(
209        GESHI_COMMENTS => false,
210        1 => false,
211        2 => false,
212        3 => false,
213        4 => false,
214        5 => false,
215        ),
216    'STYLES' => array(
217        'KEYWORDS' => array(
218            1 => 'color: navy;', // Directives
219            2 => 'color: blue;', // System Functions
220            3 => 'color: blue;', // System Variables
221            4 => 'color: #6A5ACD; font-style: italic;', // Nomads Global Variables
222            5 => 'color: #BDB76B;', // Mnemonics
223            ),
224        'COMMENTS' => array(
225            1 => 'color: #008080; font-style: italic;',
226            2 => 'color: #008080;',
227            'MULTI' => 'color: #008080; font-style: italic;'
228            ),
229        'BRACKETS' => array(
230            0 => 'color: #000066;'
231            ),
232        'STRINGS' => array(
233            0 => 'color: green;'
234            ),
235        'NUMBERS' => array(
236            0 => 'color: #00008B;'
237            ),
238        'METHODS' => array(
239            ),
240        'SYMBOLS' => array(
241            0 => 'color: #008000;',
242            1 => 'color: #000099;',
243            2 => 'color: #000099;',
244            3 => 'color: #0000C9;',
245            4 => 'color: #000099;'
246            ),
247        'ESCAPE_CHAR' => array(
248            0 => 'color: #000099;'
249            ),
250        'SCRIPT' => array(
251            ),
252        'REGEXPS' => array(
253            1 => 'color: #006400; font-weight: bold',
254            2 => 'color: #6A5ACD;'
255            )
256        ),
257    'URLS' => array(
258        1 => 'http://www.allbasic.info./wiki/index.php/PX:Directive_{FNAME}',
259        2 => 'http://www.allbasic.info./wiki/index.php/PX:System_function_{FNAME}',
260        3 => 'http://www.allbasic.info./wiki/index.php/PX:System_variable_{FNAME}',
261        4 => 'http://www.allbasic.info./wiki/index.php/PX:Nomads_{FNAME}',
262        5 => 'http://www.allbasic.info./wiki/index.php/PX:Mnemonic_{FNAMEU}'
263        ),
264    'OOLANG' => true,
265    'OBJECT_SPLITTERS' => array(
266        1 => "'"
267        ),
268    'REGEXPS' => array(
269        1 => array(
270            // Line Labels
271            GESHI_SEARCH => '([[:space:]])([a-zA-Z_][a-zA-Z0-9_]+)(:)',
272            GESHI_REPLACE => '\\2',
273            GESHI_MODIFIERS => '',
274            GESHI_BEFORE => '\\1',
275            GESHI_AFTER => '\\3'
276            ),
277        2 => array(
278            // Global String Variables
279            GESHI_SEARCH => '(\%)([a-zA-Z_][a-zA-Z0-9_]+)(\$)',
280            GESHI_REPLACE => '\\1\\2\\3',
281            GESHI_MODIFIERS => '',
282            GESHI_BEFORE => '',
283            GESHI_AFTER => ''
284            )
285        ),
286    'STRICT_MODE_APPLIES' => GESHI_NEVER,
287    'SCRIPT_DELIMITERS' => array(
288        ),
289    'HIGHLIGHT_STRICT_BLOCK' => array(
290        ),
291    'PARSER_CONTROL' => array(
292        'ENABLE_FLAGS' => array(
293            'NUMBERS' => GESHI_NEVER
294            )
295        ),
296    'TAB_WIDTH' => 4
297);
298