1<?php
2/*************************************************************************************
3 * erlang.php
4 * --------
5 * Author: Benny Baumann (BenBE@geshi.org)
6 * Contributions:
7 * - Uwe Dauernheim (uwe@dauernheim.net)
8 * - Dan Forest-Barbier (dan@twisted.in)
9 * Copyright: (c) 2008 Uwe Dauernheim (http://www.kreisquadratur.de/)
10 * Release Version: 1.0.9.1
11 * Date Started: 2008-09-27
12 *
13 * Erlang language file for GeSHi.
14 *
15 * CHANGES
16 * -------
17 * 2009/05/02 (1.0.8.3)
18 *  -  Now using 'PARSER_CONTROL' instead of huge rexgexps, better and cleaner
19 *
20 * 2009/04/26 (1.0.8.3)
21 *  -  Only link to existing docs / Fixes
22 *
23 * 2008-09-28 (1.0.0.1)
24 *   [!] Bug fixed with keyword module.
25 *   [+] Added more function names
26 *
27 * 2008-09-27 (1.0.0)
28 *   [ ] First Release
29 *
30 * TODO (updated 2008-09-27)
31 * -------------------------
32 *   [!] Stop ';' from being transformed to '<SEMI>'
33 *
34 *************************************************************************************
35 *
36 *     This file is part of GeSHi.
37 *
38 *   GeSHi is free software; you can redistribute it and/or modify
39 *   it under the terms of the GNU General Public License as published by
40 *   the Free Software Foundation; either version 2 of the License, or
41 *   (at your option) any later version.
42 *
43 *   GeSHi is distributed in the hope that it will be useful,
44 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
45 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
46 *   GNU General Public License for more details.
47 *
48 *   You should have received a copy of the GNU General Public License
49 *   along with GeSHi; if not, write to the Free Software
50 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
51 *
52 ************************************************************************************/
53
54$language_data = array(
55    'LANG_NAME' => 'Erlang',
56    'COMMENT_SINGLE' => array(1 => '%'),
57    'COMMENT_MULTI' => array(),
58    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
59    'QUOTEMARKS' => array('"'),
60    'HARDQUOTE' => array("'", "'"),
61    'HARDESCAPE' => array("'", "\\"),
62    'HARDCHAR' => "\\",
63    'ESCAPE_CHAR' => '\\',
64    'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
65    'KEYWORDS' => array(
66        //Control flow keywrods
67        1 => array(
68            'after', 'andalso', 'begin', 'case', 'catch', 'end', 'fun', 'if',
69            'of', 'orelse', 'receive', 'try', 'when', 'query'
70            ),
71        //Binary operators
72        2 => array(
73            'and', 'band', 'bnot', 'bor', 'bsl', 'bsr', 'bxor', 'div', 'not',
74            'or', 'rem', 'xor'
75            ),
76        3 => array(
77            'abs', 'alive', 'apply', 'atom_to_list', 'binary_to_list',
78            'binary_to_term', 'concat_binary', 'date', 'disconnect_node',
79            'element', 'erase', 'exit', 'float', 'float_to_list', 'get',
80            'get_keys', 'group_leader', 'halt', 'hd', 'integer_to_list',
81            'is_alive', 'length', 'link', 'list_to_atom', 'list_to_binary',
82            'list_to_float', 'list_to_integer', 'list_to_pid', 'list_to_tuple',
83            'load_module', 'make_ref', 'monitor_node', 'node', 'nodes', 'now',
84            'open_port', 'pid_to_list', 'process_flag', 'process_info',
85            'process', 'put', 'register', 'registered', 'round', 'self',
86            'setelement', 'size', 'spawn', 'spawn_link', 'split_binary',
87            'statistics', 'term_to_binary', 'throw', 'time', 'tl', 'trunc',
88            'tuple_to_list', 'unlink', 'unregister', 'whereis'
89            ),
90        // Built-In Functions
91        4 => array(
92            'atom', 'binary', 'constant', 'function', 'integer', 'is_atom',
93            'is_binary', 'is_constant', 'is_function', 'is_integer', 'is_list',
94            'is_number', 'is_pid', 'is_reference', 'is_record', 'list',
95            'number', 'pid', 'ports', 'port_close', 'port_info', 'reference'
96            ),
97        // Erlang/OTP internal modules (scary one)
98        5 => array(
99            'alarm_handler', 'any', 'app', 'application', 'appmon', 'appup',
100            'array', 'asn1ct', 'asn1rt', 'auth', 'base64', 'beam_lib', 'c',
101            'calendar', 'code', 'common_test_app', 'compile', 'config',
102            'corba', 'corba_object', 'cosEventApp', 'CosEventChannelAdmin',
103            'CosEventChannelAdmin_ConsumerAdmin',
104            'CosEventChannelAdmin_EventChannel',
105            'CosEventChannelAdmin_ProxyPullConsumer',
106            'CosEventChannelAdmin_ProxyPullSupplier',
107            'CosEventChannelAdmin_ProxyPushConsumer',
108            'CosEventChannelAdmin_ProxyPushSupplier',
109            'CosEventChannelAdmin_SupplierAdmin', 'CosEventDomainAdmin',
110            'CosEventDomainAdmin_EventDomain',
111            'CosEventDomainAdmin_EventDomainFactory',
112            'cosEventDomainApp', 'CosFileTransfer_Directory',
113            'CosFileTransfer_File', 'CosFileTransfer_FileIterator',
114            'CosFileTransfer_FileTransferSession',
115            'CosFileTransfer_VirtualFileSystem',
116            'cosFileTransferApp', 'CosNaming', 'CosNaming_BindingIterator',
117            'CosNaming_NamingContext', 'CosNaming_NamingContextExt',
118            'CosNotification', 'CosNotification_AdminPropertiesAdmin',
119            'CosNotification_QoSAdmin', 'cosNotificationApp',
120            'CosNotifyChannelAdmin_ConsumerAdmin',
121            'CosNotifyChannelAdmin_EventChannel',
122            'CosNotifyChannelAdmin_EventChannelFactory',
123            'CosNotifyChannelAdmin_ProxyConsumer',
124            'CosNotifyChannelAdmin_ProxyPullConsumer',
125            'CosNotifyChannelAdmin_ProxyPullSupplier',
126            'CosNotifyChannelAdmin_ProxyPushConsumer',
127            'CosNotifyChannelAdmin_ProxyPushSupplier',
128            'CosNotifyChannelAdmin_ProxySupplier',
129            'CosNotifyChannelAdmin_SequenceProxyPullConsumer',
130            'CosNotifyChannelAdmin_SequenceProxyPullSupplier',
131            'CosNotifyChannelAdmin_SequenceProxyPushConsumer',
132            'CosNotifyChannelAdmin_SequenceProxyPushSupplier',
133            'CosNotifyChannelAdmin_StructuredProxyPullConsumer',
134            'CosNotifyChannelAdmin_StructuredProxyPullSupplier',
135            'CosNotifyChannelAdmin_StructuredProxyPushConsumer',
136            'CosNotifyChannelAdmin_StructuredProxyPushSupplier',
137            'CosNotifyChannelAdmin_SupplierAdmin',
138            'CosNotifyComm_NotifyPublish', 'CosNotifyComm_NotifySubscribe',
139            'CosNotifyFilter_Filter', 'CosNotifyFilter_FilterAdmin',
140            'CosNotifyFilter_FilterFactory', 'CosNotifyFilter_MappingFilter',
141            'cosProperty', 'CosPropertyService_PropertiesIterator',
142            'CosPropertyService_PropertyNamesIterator',
143            'CosPropertyService_PropertySet',
144            'CosPropertyService_PropertySetDef',
145            'CosPropertyService_PropertySetDefFactory',
146            'CosPropertyService_PropertySetFactory', 'cosTime',
147            'CosTime_TimeService', 'CosTime_TIO', 'CosTime_UTO',
148            'CosTimerEvent_TimerEventHandler',
149            'CosTimerEvent_TimerEventService', 'cosTransactions',
150            'CosTransactions_Control', 'CosTransactions_Coordinator',
151            'CosTransactions_RecoveryCoordinator', 'CosTransactions_Resource',
152            'CosTransactions_SubtransactionAwareResource',
153            'CosTransactions_Terminator', 'CosTransactions_TransactionFactory',
154            'cover', 'cprof', 'cpu_sup', 'crashdump', 'crypto', 'crypto_app',
155            'ct', 'ct_cover', 'ct_ftp', 'ct_master', 'ct_rpc', 'ct_snmp',
156            'ct_ssh', 'ct_telnet', 'dbg', 'debugger', 'dets', 'dialyzer',
157            'dict', 'digraph', 'digraph_utils', 'disk_log', 'disksup',
158            'docb_gen', 'docb_transform', 'docb_xml_check', 'docbuilder_app',
159            'driver_entry', 'edoc', 'edoc_doclet', 'edoc_extract',
160            'edoc_layout', 'edoc_lib', 'edoc_run', 'egd', 'ei', 'ei_connect',
161            'epmd', 'epp', 'epp_dodger', 'eprof', 'erl', 'erl_boot_server',
162            'erl_call', 'erl_comment_scan', 'erl_connect', 'erl_ddll',
163            'erl_driver', 'erl_error', 'erl_eterm', 'erl_eval',
164            'erl_expand_records', 'erl_format', 'erl_global', 'erl_id_trans',
165            'erl_internal', 'erl_lint', 'erl_malloc', 'erl_marshal',
166            'erl_parse', 'erl_pp', 'erl_prettypr', 'erl_prim_loader',
167            'erl_prim_loader_stub', 'erl_recomment', 'erl_scan',
168            'erl_set_memory_block', 'erl_syntax', 'erl_syntax_lib', 'erl_tar',
169            'erl_tidy', 'erlang', 'erlang_mode', 'erlang_stub', 'erlc',
170            'erlsrv', 'error_handler', 'error_logger', 'erts_alloc',
171            'erts_alloc_config', 'escript', 'et', 'et_collector',
172            'et_selector', 'et_viewer', 'etop', 'ets', 'eunit', 'file',
173            'file_sorter', 'filelib', 'filename', 'fixed', 'fprof', 'ftp',
174            'gb_sets', 'gb_trees', 'gen_event', 'gen_fsm', 'gen_sctp',
175            'gen_server', 'gen_tcp', 'gen_udp', 'gl', 'global', 'global_group',
176            'glu', 'gs', 'heart', 'http', 'httpd', 'httpd_conf',
177            'httpd_socket', 'httpd_util', 'i', 'ic', 'ic_c_protocol',
178            'ic_clib', 'igor', 'inet', 'inets', 'init', 'init_stub',
179            'instrument', 'int', 'interceptors', 'inviso', 'inviso_as_lib',
180            'inviso_lfm', 'inviso_lfm_tpfreader', 'inviso_rt',
181            'inviso_rt_meta', 'io', 'io_lib', 'kernel_app', 'lib', 'lists',
182            'lname', 'lname_component', 'log_mf_h', 'make', 'math', 'megaco',
183            'megaco_codec_meas', 'megaco_codec_transform',
184            'megaco_edist_compress', 'megaco_encoder', 'megaco_flex_scanner',
185            'megaco_tcp', 'megaco_transport', 'megaco_udp', 'megaco_user',
186            'memsup', 'mnesia', 'mnesia_frag_hash', 'mnesia_registry',
187            'mod_alias', 'mod_auth', 'mod_esi', 'mod_security',
188            'Module_Interface', 'ms_transform', 'net_adm', 'net_kernel',
189            'new_ssl', 'nteventlog', 'observer_app', 'odbc', 'orber',
190            'orber_acl', 'orber_diagnostics', 'orber_ifr', 'orber_tc',
191            'orddict', 'ordsets', 'os', 'os_mon', 'os_mon_mib', 'os_sup',
192            'otp_mib', 'overload', 'packages', 'percept', 'percept_profile',
193            'pg', 'pg2', 'pman', 'pool', 'prettypr', 'proc_lib', 'proplists',
194            'public_key', 'qlc', 'queue', 'random', 'rb', 're', 'regexp',
195            'registry', 'rel', 'release_handler', 'reltool', 'relup', 'rpc',
196            'run_erl', 'run_test', 'runtime_tools_app', 'sasl_app', 'script',
197            'seq_trace', 'sets', 'shell', 'shell_default', 'slave', 'snmp',
198            'snmp_app', 'snmp_community_mib', 'snmp_framework_mib',
199            'snmp_generic', 'snmp_index', 'snmp_notification_mib', 'snmp_pdus',
200            'snmp_standard_mib', 'snmp_target_mib', 'snmp_user_based_sm_mib',
201            'snmp_view_based_acm_mib', 'snmpa', 'snmpa_conf', 'snmpa_error',
202            'snmpa_error_io', 'snmpa_error_logger', 'snmpa_error_report',
203            'snmpa_local_db', 'snmpa_mpd', 'snmpa_network_interface',
204            'snmpa_network_interface_filter',
205            'snmpa_notification_delivery_info_receiver',
206            'snmpa_notification_filter', 'snmpa_supervisor', 'snmpc', 'snmpm',
207            'snmpm_conf', 'snmpm_mpd', 'snmpm_network_interface', 'snmpm_user',
208            'sofs', 'ssh', 'ssh_channel', 'ssh_connection', 'ssh_sftp',
209            'ssh_sftpd', 'ssl', 'ssl_app', 'ssl_pkix', 'start', 'start_erl',
210            'start_webtool', 'stdlib_app', 'string', 'supervisor',
211            'supervisor_bridge', 'sys', 'systools', 'tags', 'test_server',
212            'test_server_app', 'test_server_ctrl', 'tftp', 'timer', 'toolbar',
213            'ttb', 'tv', 'unicode', 'unix_telnet', 'user', 'webtool', 'werl',
214            'win32reg', 'wrap_log_reader', 'wx', 'wx_misc', 'wx_object',
215            'wxAcceleratorEntry', 'wxAcceleratorTable', 'wxArtProvider',
216            'wxAuiDockArt', 'wxAuiManager', 'wxAuiNotebook', 'wxAuiPaneInfo',
217            'wxAuiTabArt', 'wxBitmap', 'wxBitmapButton', 'wxBitmapDataObject',
218            'wxBoxSizer', 'wxBrush', 'wxBufferedDC', 'wxBufferedPaintDC',
219            'wxButton', 'wxCalendarCtrl', 'wxCalendarDateAttr',
220            'wxCalendarEvent', 'wxCaret', 'wxCheckBox', 'wxCheckListBox',
221            'wxChildFocusEvent', 'wxChoice', 'wxClientDC', 'wxClipboard',
222            'wxCloseEvent', 'wxColourData', 'wxColourDialog',
223            'wxColourPickerCtrl', 'wxColourPickerEvent', 'wxComboBox',
224            'wxCommandEvent', 'wxContextMenuEvent', 'wxControl',
225            'wxControlWithItems', 'wxCursor', 'wxDataObject', 'wxDateEvent',
226            'wxDatePickerCtrl', 'wxDC', 'wxDialog', 'wxDirDialog',
227            'wxDirPickerCtrl', 'wxDisplayChangedEvent', 'wxEraseEvent',
228            'wxEvent', 'wxEvtHandler', 'wxFileDataObject', 'wxFileDialog',
229            'wxFileDirPickerEvent', 'wxFilePickerCtrl', 'wxFindReplaceData',
230            'wxFindReplaceDialog', 'wxFlexGridSizer', 'wxFocusEvent', 'wxFont',
231            'wxFontData', 'wxFontDialog', 'wxFontPickerCtrl',
232            'wxFontPickerEvent', 'wxFrame', 'wxGauge', 'wxGBSizerItem',
233            'wxGenericDirCtrl', 'wxGLCanvas', 'wxGraphicsBrush',
234            'wxGraphicsContext', 'wxGraphicsFont', 'wxGraphicsMatrix',
235            'wxGraphicsObject', 'wxGraphicsPath', 'wxGraphicsPen',
236            'wxGraphicsRenderer', 'wxGrid', 'wxGridBagSizer', 'wxGridCellAttr',
237            'wxGridCellEditor', 'wxGridCellRenderer', 'wxGridEvent',
238            'wxGridSizer', 'wxHelpEvent', 'wxHtmlEasyPrinting', 'wxIcon',
239            'wxIconBundle', 'wxIconizeEvent', 'wxIdleEvent', 'wxImage',
240            'wxImageList', 'wxJoystickEvent', 'wxKeyEvent',
241            'wxLayoutAlgorithm', 'wxListBox', 'wxListCtrl', 'wxListEvent',
242            'wxListItem', 'wxListView', 'wxMask', 'wxMaximizeEvent',
243            'wxMDIChildFrame', 'wxMDIClientWindow', 'wxMDIParentFrame',
244            'wxMemoryDC', 'wxMenu', 'wxMenuBar', 'wxMenuEvent', 'wxMenuItem',
245            'wxMessageDialog', 'wxMiniFrame', 'wxMirrorDC',
246            'wxMouseCaptureChangedEvent', 'wxMouseEvent', 'wxMoveEvent',
247            'wxMultiChoiceDialog', 'wxNavigationKeyEvent', 'wxNcPaintEvent',
248            'wxNotebook', 'wxNotebookEvent', 'wxNotifyEvent',
249            'wxPageSetupDialog', 'wxPageSetupDialogData', 'wxPaintDC',
250            'wxPaintEvent', 'wxPalette', 'wxPaletteChangedEvent', 'wxPanel',
251            'wxPasswordEntryDialog', 'wxPen', 'wxPickerBase', 'wxPostScriptDC',
252            'wxPreviewCanvas', 'wxPreviewControlBar', 'wxPreviewFrame',
253            'wxPrintData', 'wxPrintDialog', 'wxPrintDialogData', 'wxPrinter',
254            'wxPrintout', 'wxPrintPreview', 'wxProgressDialog',
255            'wxQueryNewPaletteEvent', 'wxRadioBox', 'wxRadioButton',
256            'wxRegion', 'wxSashEvent', 'wxSashLayoutWindow', 'wxSashWindow',
257            'wxScreenDC', 'wxScrollBar', 'wxScrolledWindow', 'wxScrollEvent',
258            'wxScrollWinEvent', 'wxSetCursorEvent', 'wxShowEvent',
259            'wxSingleChoiceDialog', 'wxSizeEvent', 'wxSizer', 'wxSizerFlags',
260            'wxSizerItem', 'wxSlider', 'wxSpinButton', 'wxSpinCtrl',
261            'wxSpinEvent', 'wxSplashScreen', 'wxSplitterEvent',
262            'wxSplitterWindow', 'wxStaticBitmap', 'wxStaticBox',
263            'wxStaticBoxSizer', 'wxStaticLine', 'wxStaticText', 'wxStatusBar',
264            'wxStdDialogButtonSizer', 'wxStyledTextCtrl', 'wxStyledTextEvent',
265            'wxSysColourChangedEvent', 'wxTextAttr', 'wxTextCtrl',
266            'wxTextDataObject', 'wxTextEntryDialog', 'wxToggleButton',
267            'wxToolBar', 'wxToolTip', 'wxTopLevelWindow', 'wxTreeCtrl',
268            'wxTreeEvent', 'wxUpdateUIEvent', 'wxWindow', 'wxWindowCreateEvent',
269            'wxWindowDC', 'wxWindowDestroyEvent', 'wxXmlResource', 'xmerl',
270            'xmerl_eventp', 'xmerl_scan', 'xmerl_xpath', 'xmerl_xs',
271            'xmerl_xsd', 'xref', 'yecc', 'zip', 'zlib', 'zlib_stub'
272            ),
273        // Binary modifiers
274        6 => array(
275            'big', 'binary', 'float', 'integer', 'little', 'signed', 'unit', 'unsigned'
276            )
277        ),
278    'SYMBOLS' => array(
279        0 => array('(', ')', '[', ']', '{', '}'),
280        1 => array('->', ',', ';', '.'),
281        2 => array('<<', '>>'),
282        3 => array('=', '||', '-', '+', '*', '/', '++', '--', '!', '<', '>', '>=',
283                    '=<', '==', '/=', '=:=', '=/=')
284        ),
285    'CASE_SENSITIVE' => array(
286        GESHI_COMMENTS => false,
287        1 => true,
288        2 => true,
289        3 => true,
290        4 => true,
291        5 => true,
292        6 => true
293        ),
294    'STYLES' => array(
295        'KEYWORDS' => array(
296            1 => 'color: #186895;',
297            2 => 'color: #014ea4;',
298            3 => 'color: #fa6fff;',
299            4 => 'color: #fa6fff;',
300            5 => 'color: #ff4e18;',
301            6 => 'color: #9d4f37;'
302            ),
303        'COMMENTS' => array(
304            1 => 'color: #666666; font-style: italic;',
305            'MULTI' => 'color: #666666; font-style: italic;'
306            ),
307        'ESCAPE_CHAR' => array(
308            0 => 'color: #000099; font-weight: bold;',
309            'HARD' => 'color: #000099; font-weight: bold;'
310            ),
311        'BRACKETS' => array(
312            0 => 'color: #109ab8;'
313            ),
314        'STRINGS' => array(
315            0 => 'color: #ff7800;'
316            ),
317        'NUMBERS' => array(
318            0 => 'color: #ff9600;'
319            ),
320        'METHODS' => array(
321            1 => 'color: #006600;',
322            2 => 'color: #006600;'
323            ),
324        'SYMBOLS' => array(
325            0 => 'color: #004866;',
326            1 => 'color: #6bb810;',
327            2 => 'color: #ee3800;',
328            3 => 'color: #014ea4;'
329            ),
330        'REGEXPS' => array(
331            0 => 'color: #6941fd;',
332            1 => 'color: #d400ed;',
333            2 => 'color: #5400b3;',
334            3 => 'color: #ff3c00;',
335            4 => 'color: #6941fd;',
336            5 => 'color: #45b3e6;',
337            6 => 'color: #ff9600;',
338            7 => 'color: #d400ed;',
339            8 => 'color: #ff9600;'
340            ),
341        'SCRIPT' => array(
342            )
343        ),
344    'URLS' => array(
345        1 => '',
346        2 => '',
347        3 => '',
348        4 => '',
349        5 => 'http://erlang.org/doc/man/{FNAME}.html',
350        6 => ''
351        ),
352    'OOLANG' => true,
353    'OBJECT_SPLITTERS' => array(
354        1 => '-&gt;',
355        2 => ':'
356        ),
357    'REGEXPS' => array(
358        //�Macro definitions
359        0 => array(
360            GESHI_SEARCH => '(-define\s*\()([a-zA-Z0-9_]+)(\(|,)',
361            GESHI_REPLACE => '\2',
362            GESHI_MODIFIERS => '',
363            GESHI_BEFORE => '\1',
364            GESHI_AFTER => '\3'
365            ),
366        // Record definitions
367        1 => array(
368            GESHI_SEARCH => '(-record\s*\()([a-zA-Z0-9_]+)(,)',
369            GESHI_REPLACE => '\2',
370            GESHI_MODIFIERS => '',
371            GESHI_BEFORE => '\1',
372            GESHI_AFTER => '\3'
373            ),
374        // Precompiler directives
375        2 => array(
376            GESHI_SEARCH => '(-)([a-z][a-zA-Z0-9_]*)(\()',
377            GESHI_REPLACE => '\2',
378            GESHI_MODIFIERS => '',
379            GESHI_BEFORE => '\1',
380            GESHI_AFTER => '\3'
381            ),
382        // Functions
383        3 => array(
384            GESHI_SEARCH => '([a-z]\w*|\'\w*\')(\s*\()',
385            GESHI_REPLACE => '\1',
386            GESHI_MODIFIERS => '',
387            GESHI_BEFORE => '',
388            GESHI_AFTER => '\2'
389            ),
390        // Macros
391        4 => array(
392            GESHI_SEARCH => '(\?)([a-zA-Z0-9_]+)',
393            GESHI_REPLACE => '\2',
394            GESHI_MODIFIERS => '',
395            GESHI_BEFORE => '\1',
396            GESHI_AFTER => ''
397            ),
398        // Variables - With hack to avoid interfering wish GeSHi internals
399        5 => array(
400            GESHI_SEARCH => '([([{,<+*-\/=\s!]|&lt;)(?!(?:PIPE|SEMI|DOT|NUM|REG3XP\d*)\W)([A-Z_]\w*)(?!\w)',
401            GESHI_REPLACE => '\2',
402            GESHI_MODIFIERS => '',
403            GESHI_BEFORE => '\1',
404            GESHI_AFTER => ''
405            ),
406        // ASCII�codes
407        6 => '(\$[a-zA-Z0-9_])',
408        // Records
409        7 => array(
410            GESHI_SEARCH => '(#)([a-z][a-zA-Z0-9_]*)(\.|\{)',
411            GESHI_REPLACE => '\2',
412            GESHI_MODIFIERS => '',
413            GESHI_BEFORE => '\1',
414            GESHI_AFTER => '\3'
415            ),
416        // Numbers with a different radix
417        8 => '(?<=>)(#[a-zA-Z0-9]*)'
418        ),
419    'STRICT_MODE_APPLIES' => GESHI_NEVER,
420    'SCRIPT_DELIMITERS' => array(),
421    'HIGHLIGHT_STRICT_BLOCK' => array(),
422    'TAB_WIDTH' => 4,
423    'PARSER_CONTROL' => array(
424        'KEYWORDS' => array(
425            3 => array(
426                'DISALLOWED_BEFORE' => '(?<![\w])',
427                'DISALLOWED_AFTER' => ''//'(?=\s*\()'
428                ),
429            5 => array(
430                'DISALLOWED_BEFORE' => '(?<=\'|)',
431                'DISALLOWED_AFTER' => '(?=(\'|):)'
432                ),
433            6 => array(
434                'DISALLOWED_BEFORE' => '(?<=\/|-)',
435                'DISALLOWED_AFTER' => ''
436                )
437            )
438        )
439);
440