74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| Language: Scilab
 | |
| Author: Sylvestre Ledru <sylvestre.ledru@scilab-enterprises.com>
 | |
| Origin: matlab.js
 | |
| Description: Scilab is a port from Matlab
 | |
| Website: https://www.scilab.org
 | |
| Category: scientific
 | |
| */
 | |
| 
 | |
| function scilab(hljs) {
 | |
|   const COMMON_CONTAINS = [
 | |
|     hljs.C_NUMBER_MODE,
 | |
|     {
 | |
|       className: 'string',
 | |
|       begin: '\'|\"',
 | |
|       end: '\'|\"',
 | |
|       contains: [ hljs.BACKSLASH_ESCAPE,
 | |
|         {
 | |
|           begin: '\'\''
 | |
|         } ]
 | |
|     }
 | |
|   ];
 | |
| 
 | |
|   return {
 | |
|     name: 'Scilab',
 | |
|     aliases: [ 'sci' ],
 | |
|     keywords: {
 | |
|       $pattern: /%?\w+/,
 | |
|       keyword: 'abort break case clear catch continue do elseif else endfunction end for function ' +
 | |
|         'global if pause return resume select try then while',
 | |
|       literal:
 | |
|         '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',
 | |
|       built_in: // Scilab has more than 2000 functions. Just list the most commons
 | |
|        'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error ' +
 | |
|        'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty ' +
 | |
|        'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log ' +
 | |
|        'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real ' +
 | |
|        'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan ' +
 | |
|        'type typename warning zeros matrix'
 | |
|     },
 | |
|     illegal: '("|#|/\\*|\\s+/\\w+)',
 | |
|     contains: [
 | |
|       {
 | |
|         className: 'function',
 | |
|         beginKeywords: 'function',
 | |
|         end: '$',
 | |
|         contains: [
 | |
|           hljs.UNDERSCORE_TITLE_MODE,
 | |
|           {
 | |
|             className: 'params',
 | |
|             begin: '\\(',
 | |
|             end: '\\)'
 | |
|           }
 | |
|         ]
 | |
|       },
 | |
|       // seems to be a guard against [ident]' or [ident].
 | |
|       // perhaps to prevent attributes from flagging as keywords?
 | |
|       {
 | |
|         begin: '[a-zA-Z_][a-zA-Z_0-9]*[\\.\']+',
 | |
|         relevance: 0
 | |
|       },
 | |
|       {
 | |
|         begin: '\\[',
 | |
|         end: '\\][\\.\']*',
 | |
|         relevance: 0,
 | |
|         contains: COMMON_CONTAINS
 | |
|       },
 | |
|       hljs.COMMENT('//', '$')
 | |
|     ].concat(COMMON_CONTAINS)
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = scilab;
 |