mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-30 18:07:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|  Language: G-code (ISO 6983)
 | |
|  Contributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>
 | |
|  Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls.
 | |
|  Website: https://www.sis.se/api/document/preview/911952/
 | |
|  */
 | |
| 
 | |
| export default function(hljs) {
 | |
|     var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
 | |
|     var GCODE_CLOSE_RE = '\\%';
 | |
|     var GCODE_KEYWORDS = {
 | |
|       $pattern: GCODE_IDENT_RE,
 | |
|       keyword: 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +
 | |
|       'EQ LT GT NE GE LE OR XOR'
 | |
|     };
 | |
|     var GCODE_START = {
 | |
|         className: 'meta',
 | |
|         begin: '([O])([0-9]+)'
 | |
|     };
 | |
|     var GCODE_CODE = [
 | |
|         hljs.C_LINE_COMMENT_MODE,
 | |
|         hljs.C_BLOCK_COMMENT_MODE,
 | |
|         hljs.COMMENT(/\(/, /\)/),
 | |
|         hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\.?[0-9]+\\.?))|' + hljs.C_NUMBER_RE}),
 | |
|         hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),
 | |
|         hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),
 | |
|         {
 | |
|             className: 'name',
 | |
|             begin: '([G])([0-9]+\\.?[0-9]?)'
 | |
|         },
 | |
|         {
 | |
|             className: 'name',
 | |
|             begin: '([M])([0-9]+\\.?[0-9]?)'
 | |
|         },
 | |
|         {
 | |
|             className: 'attr',
 | |
|             begin: '(VC|VS|#)',
 | |
|             end: '(\\d+)'
 | |
|         },
 | |
|         {
 | |
|             className: 'attr',
 | |
|             begin: '(VZOFX|VZOFY|VZOFZ)'
 | |
|         },
 | |
|         {
 | |
|             className: 'built_in',
 | |
|             begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\[)',
 | |
|             end: '([-+]?([0-9]*\\.?[0-9]+\\.?))(\\])'
 | |
|         },
 | |
|         {
 | |
|             className: 'symbol',
 | |
|             variants: [
 | |
|                 {
 | |
|                     begin: 'N', end: '\\d+',
 | |
|                     illegal: '\\W'
 | |
|                 }
 | |
|             ]
 | |
|         }
 | |
|     ];
 | |
| 
 | |
|     return {
 | |
|         name: 'G-code (ISO 6983)',
 | |
|         aliases: ['nc'],
 | |
|         // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.
 | |
|         // However, most prefer all uppercase and uppercase is customary.
 | |
|         case_insensitive: true,
 | |
|         keywords: GCODE_KEYWORDS,
 | |
|         contains: [
 | |
|             {
 | |
|                 className: 'meta',
 | |
|                 begin: GCODE_CLOSE_RE
 | |
|             },
 | |
|             GCODE_START
 | |
|         ].concat(GCODE_CODE)
 | |
|     };
 | |
| }
 |