1<?php 2/************************************************************************************* 3 * sas.php 4 * ------- 5 * Author: Galen Johnson (solitaryr@gmail.com) 6 * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) 7 * Release Version: 1.0.8.3 8 * Date Started: 2005/12/27 9 * 10 * SAS language file for GeSHi. Based on the sas vim file. 11 * 12 * CHANGES 13 * ------- 14 * 2008/05/23 (1.0.7.22) 15 * - Added description of extra language features (SF#1970248) 16 * - Cleaned up code style 17 * 2005/12/27 (1.0.0) 18 * - First Release 19 * 20 * TODO (updated 2005/12/27) 21 * ------------------------- 22 * * Check highlighting stuff works 23 * 24 ************************************************************************************* 25 * 26 * This file is part of GeSHi. 27 * 28 * GeSHi is free software; you can redistribute it and/or modify 29 * it under the terms of the GNU General Public License as published by 30 * the Free Software Foundation; either version 2 of the License, or 31 * (at your option) any later version. 32 * 33 * GeSHi is distributed in the hope that it will be useful, 34 * but WITHOUT ANY WARRANTY; without even the implied warranty of 35 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 36 * GNU General Public License for more details. 37 * 38 * You should have received a copy of the GNU General Public License 39 * along with GeSHi; if not, write to the Free Software 40 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 41 * 42 ************************************************************************************/ 43 44$language_data = array ( 45 'LANG_NAME' => 'SAS', 46 'COMMENT_SINGLE' => array(), 47 'COMMENT_MULTI' => array('/*' => '*/'), 48 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 49 'QUOTEMARKS' => array("'", '"'), 50 'ESCAPE_CHAR' => '\\', 51 'KEYWORDS' => array( 52 1 => array( 53 '_ALL_','_CHARACTER_','_INFILE_','_N_','_NULL_','_NUMERIC_', 54 '_WEBOUT_' 55 ), 56 2 => array( 57 '%BQUOTE','%CMPRES','%COMPSTOR','%DATATYP','%DISPLAY','%DO','%ELSE', 58 '%END','%EVAL','%GLOBAL','%GOTO','%IF','%INDEX','%INPUT','%KEYDEF', 59 '%LABEL','%LEFT','%LENGTH','%LET','%LOCAL','%LOWCASE','%MACRO', 60 '%MEND','%NRBQUOTE','%NRQUOTE','%NRSTR','%PUT','%QCMPRES','%QLEFT', 61 '%QLOWCASE','%QSCAN','%QSUBSTR','%QSYSFUNC','%QTRIM','%QUOTE', 62 '%QUPCASE','%SCAN','%STR','%SUBSTR','%SUPERQ','%SYSCALL', 63 '%SYSEVALF','%SYSEXEC','%SYSFUNC','%SYSGET','%SYSLPUT','%SYSPROD', 64 '%SYSRC','%SYSRPUT','%THEN','%TO','%TRIM','%UNQUOTE','%UNTIL', 65 '%UPCASE','%VERIFY','%WHILE','%WINDOW' 66 ), 67 3 => array( 68 'ABS','ADDR','AIRY','ARCOS','ARSIN','ATAN','ATTRC','ATTRN','BAND', 69 'BETAINV','BLSHIFT','BNOT','BOR','BRSHIFT','BXOR','BYTE','CDF', 70 'CEIL','CEXIST','CINV','CLOSE','CNONCT','COLLATE','COMPBL', 71 'COMPOUND','COMPRESS','COSH','COS','CSS','CUROBS','CV','DACCDBSL', 72 'DACCDB','DACCSL','DACCSYD','DACCTAB','DAIRY','DATETIME','DATEJUL', 73 'DATEPART','DATE','DAY','DCLOSE','DEPDBSL','DEPDB','DEPSL','DEPSYD', 74 'DEPTAB','DEQUOTE','DHMS','DIF','DIGAMMA','DIM','DINFO','DNUM', 75 'DOPEN','DOPTNAME','DOPTNUM','DREAD','DROPNOTE','DSNAME','ERFC', 76 'ERF','EXIST','EXP','FAPPEND','FCLOSE','FCOL','FDELETE','FETCHOBS', 77 'FETCH','FEXIST','FGET','FILEEXIST','FILENAME','FILEREF','FINFO', 78 'FINV','FIPNAMEL','FIPNAME','FIPSTATE','FLOOR','FNONCT','FNOTE', 79 'FOPEN','FOPTNAME','FOPTNUM','FPOINT','FPOS','FPUT','FREAD', 80 'FREWIND','FRLEN','FSEP','FUZZ','FWRITE','GAMINV','GAMMA', 81 'GETOPTION','GETVARC','GETVARN','HBOUND','HMS','HOSTHELP','HOUR', 82 'IBESSEL','INDEXW','INDEXC','INDEX','INPUTN','INPUTC','INPUT', 83 'INTRR','INTCK','INTNX','INT','IRR','JBESSEL','JULDATE','KURTOSIS', 84 'LAG','LBOUND','LEFT','LENGTH','LGAMMA','LIBNAME','LIBREF','LOG10', 85 'LOG2','LOGPDF','LOGPMF','LOGSDF','LOG','LOWCASE','MAX','MDY', 86 'MEAN','MINUTE','MIN','MOD','MONTH','MOPEN','MORT','NETPV','NMISS', 87 'NORMAL','NPV','N','OPEN','ORDINAL','PATHNAME','PDF','PEEKC','PEEK', 88 'PMF','POINT','POISSON','POKE','PROBBETA','PROBBNML','PROBCHI', 89 'PROBF','PROBGAM','PROBHYPR','PROBIT','PROBNEGB','PROBNORM','PROBT', 90 'PUTN','PUTC','PUT','QTR','QUOTE','RANBIN','RANCAU','RANEXP', 91 'RANGAM','RANGE','RANK','RANNOR','RANPOI','RANTBL','RANTRI', 92 'RANUNI','REPEAT','RESOLVE','REVERSE','REWIND','RIGHT','ROUND', 93 'SAVING','SCAN','SDF','SECOND','SIGN','SINH','SIN','SKEWNESS', 94 'SOUNDEX','SPEDIS','SQRT','STDERR','STD','STFIPS','STNAME', 95 'STNAMEL','SUBSTR','SUM','SYMGET','SYSGET','SYSMSG','SYSPROD', 96 'SYSRC','SYSTEM','TANH','TAN','TIMEPART','TIME','TINV','TNONCT', 97 'TODAY','TRANSLATE','TRANWRD','TRIGAMMA','TRIMN','TRIM','TRUNC', 98 'UNIFORM','UPCASE','USS','VARFMT','VARINFMT','VARLABEL','VARLEN', 99 'VARNAME','VARNUM','VARRAYX','VARRAY','VARTYPE','VAR','VERIFY', 100 'VFORMATX','VFORMATDX','VFORMATD','VFORMATNX','VFORMATN', 101 'VFORMATWX','VFORMATW','VFORMAT','VINARRAYX','VINARRAY', 102 'VINFORMATX','VINFORMATDX','VINFORMATD','VINFORMATNX','VINFORMATN', 103 'VINFORMATWX','VINFORMATW','VINFORMAT','VLABELX','VLABEL', 104 'VLENGTHX','VLENGTH','VNAMEX','VNAME','VTYPEX','VTYPE','WEEKDAY', 105 'YEAR','YYQ','ZIPFIPS','ZIPNAME','ZIPNAMEL','ZIPSTATE' 106 ), 107 4 => array( 108 'ABORT','ADD','ALTER','AND','ARRAY','AS','ATTRIB','BY','CALL', 109 'CARDS4','CASCADE','CATNAME','CHECK','CONTINUE','CREATE', 110 'DATALINES4','DELETE','DESCRIBE','DISPLAY','DISTINCT','DM','DROP', 111 'ENDSAS','FILE','FOOTNOTE','FOREIGN','FORMAT','FROM', 112 'GOTO','GROUP','HAVING','IN','INFILE','INFORMAT', 113 'INSERT','INTO','KEEP','KEY','LABEL','LEAVE', 114 'LIKE','LINK','LIST','LOSTCARD','MERGE','MESSAGE','MISSING', 115 'MODIFY','MSGTYPE','NOT','NULL','ON','OPTIONS','OR','ORDER', 116 'OUTPUT','PAGE','PRIMARY','REDIRECT','REFERENCES','REMOVE', 117 'RENAME','REPLACE','RESET','RESTRICT','RETAIN','RETURN','SELECT', 118 'SET','SKIP','STARTSAS','STOP','SYSTASK','TABLE','TITLE','UNIQUE', 119 'UPDATE','VALIDATE','VIEW','WAITSAS','WHERE','WINDOW','X' 120 ), 121 5 => array( 122 'DO','ELSE','END','IF','THEN','UNTIL','WHILE' 123 ), 124 6 => array( 125 'RUN','QUIT','DATA' 126 ), 127 7 => array( 128 'ERROR' 129 ), 130 8 => array( 131 'WARNING' 132 ), 133 9 => array( 134 'NOTE' 135 ) 136 ), 137 'SYMBOLS' => array( 138 ), 139 'CASE_SENSITIVE' => array( 140 GESHI_COMMENTS => false, 141 1 => false, 142 2 => false, 143 3 => false, 144 4 => false, 145 5 => false, 146 6 => false, 147 7 => false, 148 8 => false, 149 9 => false 150 ), 151 'STYLES' => array( 152 'KEYWORDS' => array( 153 1 => 'color: #0000ff;', 154 2 => 'color: #0000ff;', 155 3 => 'color: #0000ff;', 156 4 => 'color: #0000ff;', 157 5 => 'color: #0000ff;', 158 6 => 'color: #000080; font-weight: bold;', 159 7 => 'color: #ff0000;', 160 8 => 'color: #00ff00;', 161 9 => 'color: #0000ff;' 162 ), 163 'COMMENTS' => array( 164// 1 => 'color: #006400; font-style: italic;', 165 'MULTI' => 'color: #006400; font-style: italic;' 166 ), 167 'ESCAPE_CHAR' => array( 168 0 => 'color: #000099; font-weight: bold;' 169 ), 170 'BRACKETS' => array( 171 0 => 'color: #66cc66;' 172 ), 173 'STRINGS' => array( 174 0 => 'color: #a020f0;' 175 ), 176 'NUMBERS' => array( 177 0 => 'color: #2e8b57; font-weight: bold;' 178 ), 179 'METHODS' => array( 180 ), 181 'SYMBOLS' => array( 182 0 => 'color: #66cc66;' 183 ), 184 'SCRIPT' => array( 185 0 => '', 186 1 => '', 187 2 => '', 188 3 => '' 189 ), 190 'REGEXPS' => array( 191 0 => 'color: #0000ff; font-weight: bold;', 192 1 => 'color: #000080; font-weight: bold;', 193 2 => 'color: #006400; font-style: italic;', 194 3 => 'color: #006400; font-style: italic;', 195 4 => 'color: #006400; font-style: italic;', 196 5 => 'color: #ff0000; font-weight: bold;', 197 6 => 'color: #00ff00; font-style: italic;', 198 7 => 'color: #0000ff; font-style: normal;', 199 8 => 'color: #b218b2; font-weight: bold;', 200 9 => 'color: #b218b2; font-weight: bold;' 201 ) 202 ), 203 'URLS' => array( 204 1 => '', 205 2 => '', 206 3 => '', 207 4 => '', 208 5 => '', 209 6 => '', 210 7 => '', 211 8 => '', 212 9 => '' 213 ), 214 'OOLANG' => false, 215 'OBJECT_SPLITTERS' => array( 216 ), 217 'REGEXPS' => array( 218 0 => "&[a-zA-Z_][a-zA-Z0-9_]*", 219 1 => array(//Procedures 220 GESHI_SEARCH => '(^\\s*)(PROC \\w+)', 221 GESHI_REPLACE => '\\2', 222 GESHI_MODIFIERS => 'im', 223 GESHI_BEFORE => '\\1', 224 GESHI_AFTER => '' 225 ), 226 2 => array( 227 GESHI_SEARCH => '(^\\s*)(\\*.*;)', 228 GESHI_REPLACE => '\\2', 229 GESHI_MODIFIERS => 'im', 230 GESHI_BEFORE => '\\1', 231 GESHI_AFTER => '' 232 ), 233 3 => array( 234 GESHI_SEARCH => '(.*;\\s*)(\\*.*;)', 235 GESHI_REPLACE => '\\2', 236 GESHI_MODIFIERS => 'im', 237 GESHI_BEFORE => '\\1', 238 GESHI_AFTER => '' 239 ), 240 4 => array( 241 GESHI_SEARCH => '(^\\s*)(%\\*.*;)', 242 GESHI_REPLACE => '\\2', 243 GESHI_MODIFIERS => 'im', 244 GESHI_BEFORE => '\\1', 245 GESHI_AFTER => '' 246 ), 247 5 => array(//Error messages 248 GESHI_SEARCH => '(^ERROR.*)', 249 GESHI_REPLACE => '\\1', 250 GESHI_MODIFIERS => 'im', 251 GESHI_BEFORE => '', 252 GESHI_AFTER => '' 253 ), 254 6 => array(//Warning messages 255 GESHI_SEARCH => '(^WARNING.*)', 256 GESHI_REPLACE => '\\1', 257 GESHI_MODIFIERS => 'im', 258 GESHI_BEFORE => '', 259 GESHI_AFTER => '' 260 ), 261 7 => array(//Notice messages 262 GESHI_SEARCH => '(^NOTE.*)', 263 GESHI_REPLACE => '\\1', 264 GESHI_MODIFIERS => 'im', 265 GESHI_BEFORE => '', 266 GESHI_AFTER => '' 267 ), 268 8 => array( 269 GESHI_SEARCH => '(^\\s*)(CARDS.*)(^\\s*;\\s*$)', 270 GESHI_REPLACE => '\\2', 271 GESHI_MODIFIERS => 'sim', 272 GESHI_BEFORE => '\\1', 273 GESHI_AFTER => '\\3' 274 ), 275 9 => array( 276 GESHI_SEARCH => '(^\\s*)(DATALINES.*)(^\\s*;\\s*$)', 277 GESHI_REPLACE => '\\2', 278 GESHI_MODIFIERS => 'sim', 279 GESHI_BEFORE => '\\1', 280 GESHI_AFTER => '\\3' 281 ) 282 ), 283 'STRICT_MODE_APPLIES' => GESHI_MAYBE, 284 'SCRIPT_DELIMITERS' => array( 285 ), 286 'HIGHLIGHT_STRICT_BLOCK' => array( 287 ) 288); 289 290?> 291