1<?php
2/*************************************************************************************
3 * upc.php
4 * -----
5 * Author: Viraj Sinha (viraj@indent.com)
6 * Contributors:
7 *  - Nigel McNie (nigel@geshi.org)
8 *  - Jack Lloyd (lloyd@randombit.net)
9 *  - Michael Mol (mikemol@gmail.com)
10 * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
11 * Release Version: 1.0.9.1
12 * Date Started: 2004/06/04
13 *
14 * UPC language file for GeSHi.
15 *
16 * CHANGES
17 * -------
18 * 2011/06/14 (1.0.8.11)
19 *   -  This file is a revision of c.php with UPC keywords added
20 *
21 *************************************************************************************
22 *
23 *     This file is part of GeSHi.
24 *
25 *   GeSHi is free software; you can redistribute it and/or modify
26 *   it under the terms of the GNU General Public License as published by
27 *   the Free Software Foundation; either version 2 of the License, or
28 *   (at your option) any later version.
29 *
30 *   GeSHi is distributed in the hope that it will be useful,
31 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
32 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
33 *   GNU General Public License for more details.
34 *
35 *   You should have received a copy of the GNU General Public License
36 *   along with GeSHi; if not, write to the Free Software
37 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
38 *
39 ************************************************************************************/
40
41$language_data = array (
42    'LANG_NAME' => 'UPC',
43    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
44    'COMMENT_MULTI' => array('/*' => '*/'),
45    'COMMENT_REGEXP' => array(
46        //Multiline-continued single-line comments
47        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
48        //Multiline-continued preprocessor define
49        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
50        ),
51    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
52    'QUOTEMARKS' => array("'", '"'),
53    'ESCAPE_CHAR' => '',
54    'ESCAPE_REGEXP' => array(
55        //Simple Single Char Escapes
56        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
57        //Hexadecimal Char Specs
58        2 => "#\\\\x[\da-fA-F]{2}#",
59        //Hexadecimal Char Specs
60        3 => "#\\\\u[\da-fA-F]{4}#",
61        //Hexadecimal Char Specs
62        4 => "#\\\\U[\da-fA-F]{8}#",
63        //Octal Char Specs
64        5 => "#\\\\[0-7]{1,3}#"
65        ),
66    'NUMBERS' =>
67        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
68        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
69        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
70    'KEYWORDS' => array(
71        1 => array(
72            'if', 'return', 'while', 'case', 'continue', 'default',
73            'do', 'else', 'for', 'switch', 'goto',
74
75            'upc_forall', 'upc_barrier', 'upc_notify', 'upc_wait', 'upc_fence'
76            ),
77        2 => array(
78            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
79            ),
80        3 => array(
81            // assert.h
82            'assert',
83
84            //complex.h
85            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',
86            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',
87            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',
88
89            //ctype.h
90            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',
91            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',
92            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',
93
94            //inttypes.h
95            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',
96            'wcstoumax',
97
98            //locale.h
99            'localeconv', 'setlocale',
100
101            //math.h
102            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',
103            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',
104            'sin', 'sinh', 'sqrt', 'tan', 'tanh',
105
106            //setjmp.h
107            'longjmp', 'setjmp',
108
109            //signal.h
110            'raise',
111
112            //stdarg.h
113            'va_arg', 'va_copy', 'va_end', 'va_start',
114
115            //stddef.h
116            'offsetof',
117
118            //stdio.h
119            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',
120            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',
121            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',
122            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',
123            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',
124            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',
125            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',
126            'vsprintf', 'vsscanf',
127
128            //stdlib.h
129            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',
130            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',
131            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',
132            'strtol', 'strtoul', 'system',
133
134            //string.h
135            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',
136            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',
137            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',
138            'strspn', 'strstr', 'strtok', 'strxfrm',
139
140            //time.h
141            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',
142            'mktime', 'strftime', 'time',
143
144            //wchar.h
145            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',
146            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',
147            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',
148            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',
149            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',
150            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',
151            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',
152            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',
153            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',
154
155            //wctype.h
156            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',
157            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',
158            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',
159            'wctrans', 'wctype'
160            ),
161        4 => array(
162            'auto', 'char', 'const', 'double',  'float', 'int', 'long',
163            'register', 'short', 'signed', 'sizeof', 'static', 'struct',
164            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',
165
166            'int8', 'int16', 'int32', 'int64',
167            'uint8', 'uint16', 'uint32', 'uint64',
168
169            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
170            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
171
172            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
173            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
174
175            'int8_t', 'int16_t', 'int32_t', 'int64_t',
176            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
177
178            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',
179            'size_t', 'off_t',
180
181            'upc_lock_t', 'shared', 'strict', 'relaxed', 'upc_blocksizeof',
182            'upc_localsizeof', 'upc_elemsizeof'
183            ),
184        ),
185    'SYMBOLS' => array(
186        '(', ')', '{', '}', '[', ']',
187        '+', '-', '*', '/', '%',
188        '=', '<', '>',
189        '!', '^', '&', '|',
190        '?', ':',
191        ';', ','
192        ),
193    'CASE_SENSITIVE' => array(
194        GESHI_COMMENTS => false,
195        1 => true,
196        2 => true,
197        3 => true,
198        4 => true,
199        ),
200    'STYLES' => array(
201        'KEYWORDS' => array(
202            1 => 'color: #b1b100;',
203            2 => 'color: #000000; font-weight: bold;',
204            3 => 'color: #000066;',
205            4 => 'color: #993333;'
206            ),
207        'COMMENTS' => array(
208            1 => 'color: #666666; font-style: italic;',
209            2 => 'color: #339933;',
210            'MULTI' => 'color: #808080; font-style: italic;'
211            ),
212        'ESCAPE_CHAR' => array(
213            0 => 'color: #000099; font-weight: bold;',
214            1 => 'color: #000099; font-weight: bold;',
215            2 => 'color: #660099; font-weight: bold;',
216            3 => 'color: #660099; font-weight: bold;',
217            4 => 'color: #660099; font-weight: bold;',
218            5 => 'color: #006699; font-weight: bold;',
219            'HARD' => '',
220            ),
221        'BRACKETS' => array(
222            0 => 'color: #009900;'
223            ),
224        'STRINGS' => array(
225            0 => 'color: #ff0000;'
226            ),
227        'NUMBERS' => array(
228            0 => 'color: #0000dd;',
229            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
230            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
231            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
232            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
233            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
234            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
235            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
236            ),
237        'METHODS' => array(
238            1 => 'color: #202020;',
239            2 => 'color: #202020;'
240            ),
241        'SYMBOLS' => array(
242            0 => 'color: #339933;'
243            ),
244        'REGEXPS' => array(
245            ),
246        'SCRIPT' => array(
247            )
248        ),
249    'URLS' => array(
250        1 => '',
251        2 => '',
252        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
253        4 => ''
254        ),
255    'OOLANG' => true,
256    'OBJECT_SPLITTERS' => array(
257        1 => '.',
258        2 => '::'
259        ),
260    'REGEXPS' => array(
261        ),
262    'STRICT_MODE_APPLIES' => GESHI_NEVER,
263    'SCRIPT_DELIMITERS' => array(
264        ),
265    'HIGHLIGHT_STRICT_BLOCK' => array(
266        ),
267    'TAB_WIDTH' => 4
268);
269