codekingpro/portable-devtools
114k
1"""2 pygments.lexers.mosel3 ~~~~~~~~~~~~~~~~~~~~~4 5 Lexers for the mosel language.6 http://www.fico.com/en/products/fico-xpress-optimization7 8 :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.9 :license: BSD, see LICENSE for details.10"""11 12from pygments.lexer import RegexLexer, words13from pygments.token import Text, Comment, Operator, Keyword, Name, String, \14 Number, Punctuation15 16__all__ = ['MoselLexer']17 18FUNCTIONS = (19 # core functions20 '_',21 'abs',22 'arctan',23 'asproc',24 'assert',25 'bitflip',26 'bitneg',27 'bitset',28 'bitshift',29 'bittest',30 'bitval',31 'ceil',32 'cos',33 'create',34 'currentdate',35 'currenttime',36 'cutelt',37 'cutfirst',38 'cuthead',39 'cutlast',40 'cuttail',41 'datablock',42 'delcell',43 'exists',44 'exit',45 'exp',46 'exportprob',47 'fclose',48 'fflush',49 'finalize',50 'findfirst',51 'findlast',52 'floor',53 'fopen',54 'fselect',55 'fskipline',56 'fwrite',57 'fwrite_',58 'fwriteln',59 'fwriteln_',60 'getact',61 'getcoeff',62 'getcoeffs',63 'getdual',64 'getelt',65 'getfid',66 'getfirst',67 'getfname',68 'gethead',69 'getlast',70 'getobjval',71 'getparam',72 'getrcost',73 'getreadcnt',74 'getreverse',75 'getsize',76 'getslack',77 'getsol',78 'gettail',79 'gettype',80 'getvars',81 'isdynamic',82 'iseof',83 'isfinite',84 'ishidden',85 'isinf',86 'isnan',87 'isodd',88 'ln',89 'localsetparam',90 'log',91 'makesos1',92 'makesos2',93 'maxlist',94 'memoryuse',95 'minlist',96 'newmuid',97 'publish',98 'random',99 'read',100 'readln',101 'reset',102 'restoreparam',103 'reverse',104 'round',105 'setcoeff',106 'sethidden',107 'setioerr',108 'setmatherr',109 'setname',110 'setparam',111 'setrandseed',112 'setrange',113 'settype',114 'sin',115 'splithead',116 'splittail',117 'sqrt',118 'strfmt',119 'substr',120 'timestamp',121 'unpublish',122 'versionnum',123 'versionstr',124 'write',125 'write_',126 'writeln',127 'writeln_',128 129 # mosel exam mmxprs | sed -n -e "s/ [pf][a-z]* \([a-zA-Z0-9_]*\).*/'\1',/p" | sort -u130 'addcut',131 'addcuts',132 'addmipsol',133 'basisstability',134 'calcsolinfo',135 'clearmipdir',136 'clearmodcut',137 'command',138 'copysoltoinit',139 'crossoverlpsol',140 'defdelayedrows',141 'defsecurevecs',142 'delcuts',143 'dropcuts',144 'estimatemarginals',145 'fixglobal',146 'flushmsgq',147 'getbstat',148 'getcnlist',149 'getcplist',150 'getdualray',151 'getiis',152 'getiissense',153 'getiistype',154 'getinfcause',155 'getinfeas',156 'getlb',157 'getlct',158 'getleft',159 'getloadedlinctrs',160 'getloadedmpvars',161 'getname',162 'getprimalray',163 'getprobstat',164 'getrange',165 'getright',166 'getsensrng',167 'getsize',168 'getsol',169 'gettype',170 'getub',171 'getvars',172 'gety',173 'hasfeature',174 'implies',175 'indicator',176 'initglobal',177 'ishidden',178 'isiisvalid',179 'isintegral',180 'loadbasis',181 'loadcuts',182 'loadlpsol',183 'loadmipsol',184 'loadprob',185 'maximise',186 'maximize',187 'minimise',188 'minimize',189 'postsolve',190 'readbasis',191 'readdirs',192 'readsol',193 'refinemipsol',194 'rejectintsol',195 'repairinfeas',196 'repairinfeas_deprec',197 'resetbasis',198 'resetiis',199 'resetsol',200 'savebasis',201 'savemipsol',202 'savesol',203 'savestate',204 'selectsol',205 'setarchconsistency',206 'setbstat',207 'setcallback',208 'setcbcutoff',209 'setgndata',210 'sethidden',211 'setlb',212 'setmipdir',213 'setmodcut',214 'setsol',215 'setub',216 'setucbdata',217 'stopoptimise',218 'stopoptimize',219 'storecut',220 'storecuts',221 'unloadprob',222 'uselastbarsol',223 'writebasis',224 'writedirs',225 'writeprob',226 'writesol',227 'xor',228 'xprs_addctr',229 'xprs_addindic',230 231 # mosel exam mmsystem | sed -n -e "s/ [pf][a-z]* \([a-zA-Z0-9_]*\).*/'\1',/p" | sort -u232 'addmonths',233 'copytext',234 'cuttext',235 'deltext',236 'endswith',237 'erase',238 'expandpath',239 'fcopy',240 'fdelete',241 'findfiles',242 'findtext',243 'fmove',244 'formattext',245 'getasnumber',246 'getchar',247 'getcwd',248 'getdate',249 'getday',250 'getdaynum',251 'getdays',252 'getdirsep',253 'getdsoparam',254 'getendparse',255 'getenv',256 'getfsize',257 'getfstat',258 'getftime',259 'gethour',260 'getminute',261 'getmonth',262 'getmsec',263 'getoserrmsg',264 'getoserror',265 'getpathsep',266 'getqtype',267 'getsecond',268 'getsepchar',269 'getsize',270 'getstart',271 'getsucc',272 'getsysinfo',273 'getsysstat',274 'gettime',275 'gettmpdir',276 'gettrim',277 'getweekday',278 'getyear',279 'inserttext',280 'isvalid',281 'jointext',282 'makedir',283 'makepath',284 'newtar',285 'newzip',286 'nextfield',287 'openpipe',288 'parseextn',289 'parseint',290 'parsereal',291 'parsetext',292 'pastetext',293 'pathmatch',294 'pathsplit',295 'qsort',296 'quote',297 'readtextline',298 'regmatch',299 'regreplace',300 'removedir',301 'removefiles',302 'setchar',303 'setdate',304 'setday',305 'setdsoparam',306 'setendparse',307 'setenv',308 'sethour',309 'setminute',310 'setmonth',311 'setmsec',312 'setoserror',313 'setqtype',314 'setsecond',315 'setsepchar',316 'setstart',317 'setsucc',318 'settime',319 'settrim',320 'setyear',321 'sleep',322 'splittext',323 'startswith',324 'system',325 'tarlist',326 'textfmt',327 'tolower',328 'toupper',329 'trim',330 'untar',331 'unzip',332 'ziplist',333 334 # mosel exam mmjobs | sed -n -e "s/ [pf][a-z]* \([a-zA-Z0-9_]*\).*/'\1',/p" | sort -u335 'canceltimer',336 'clearaliases',337 'compile',338 'connect',339 'detach',340 'disconnect',341 'dropnextevent',342 'findxsrvs',343 'getaliases',344 'getannidents',345 'getannotations',346 'getbanner',347 'getclass',348 'getdsoprop',349 'getdsopropnum',350 'getexitcode',351 'getfromgid',352 'getfromid',353 'getfromuid',354 'getgid',355 'gethostalias',356 'getid',357 'getmodprop',358 'getmodpropnum',359 'getnextevent',360 'getnode',361 'getrmtid',362 'getstatus',363 'getsysinfo',364 'gettimer',365 'getuid',366 'getvalue',367 'isqueueempty',368 'load',369 'nullevent',370 'peeknextevent',371 'resetmodpar',372 'run',373 'send',374 'setcontrol',375 'setdefstream',376 'setgid',377 'sethostalias',378 'setmodpar',379 'settimer',380 'setuid',381 'setworkdir',382 'stop',383 'unload',384 'wait',385 'waitexpired',386 'waitfor',387 'waitforend',388)389 390 391class MoselLexer(RegexLexer):392 """393 For the Mosel optimization language.394 """395 name = 'Mosel'396 aliases = ['mosel']397 filenames = ['*.mos']398 url = 'https://www.fico.com/fico-xpress-optimization/docs/latest/mosel/mosel_lang/dhtml/moselreflang.html'399 version_added = '2.6'400 401 tokens = {402 'root': [403 (r'\n', Text),404 (r'\s+', Text.Whitespace),405 (r'!.*?\n', Comment.Single),406 (r'\(!(.|\n)*?!\)', Comment.Multiline),407 (words((408 'and', 'as', 'break', 'case', 'count', 'declarations', 'do',409 'dynamic', 'elif', 'else', 'end-', 'end', 'evaluation', 'false',410 'forall', 'forward', 'from', 'function', 'hashmap', 'if',411 'imports', 'include', 'initialisations', 'initializations', 'inter',412 'max', 'min', 'model', 'namespace', 'next', 'not', 'nsgroup',413 'nssearch', 'of', 'options', 'or', 'package', 'parameters',414 'procedure', 'public', 'prod', 'record', 'repeat', 'requirements',415 'return', 'sum', 'then', 'to', 'true', 'union', 'until', 'uses',416 'version', 'while', 'with'), prefix=r'\b', suffix=r'\b'),417 Keyword.Builtin),418 (words((419 'range', 'array', 'set', 'list', 'mpvar', 'mpproblem', 'linctr',420 'nlctr', 'integer', 'string', 'real', 'boolean', 'text', 'time',421 'date', 'datetime', 'returned', 'Model', 'Mosel', 'counter',422 'xmldoc', 'is_sos1', 'is_sos2', 'is_integer', 'is_binary',423 'is_continuous', 'is_free', 'is_semcont', 'is_semint',424 'is_partint'), prefix=r'\b', suffix=r'\b'),425 Keyword.Type),426 (r'(\+|\-|\*|/|=|<=|>=|\||\^|<|>|<>|\.\.|\.|:=|::|:|in|mod|div)',427 Operator),428 (r'[()\[\]{},;]+', Punctuation),429 (words(FUNCTIONS, prefix=r'\b', suffix=r'\b'), Name.Function),430 (r'(\d+\.(?!\.)\d*|\.(?!.)\d+)([eE][+-]?\d+)?', Number.Float),431 (r'\d+([eE][+-]?\d+)?', Number.Integer),432 (r'[+-]?Infinity', Number.Integer),433 (r'0[xX][0-9a-fA-F]+', Number),434 (r'"', String.Double, 'double_quote'),435 (r'\'', String.Single, 'single_quote'),436 (r'(\w+|(\.(?!\.)))', Text),437 ],438 'single_quote': [439 (r'\'', String.Single, '#pop'),440 (r'[^\']+', String.Single),441 ],442 'double_quote': [443 (r'(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)', String.Escape),444 (r'\"', String.Double, '#pop'),445 (r'[^"\\]+', String.Double),446 ],447 }448 