{"version":3,"sources":["webpack://lib/./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/gcode.js"],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2DAA2D;AACrG,6CAA6C,cAAc;AAC3D,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA","file":"react-syntax-highlighter_languages_highlight_gcode.render-page.js","sourcesContent":["/*\n Language: G-code (ISO 6983)\n Contributors: Adam Joseph Cook <adam.joseph.cook@gmail.com>\n Description: G-code syntax highlighter for Fanuc and other common CNC machine tool controls.\n Website: https://www.sis.se/api/document/preview/911952/\n */\n\nfunction gcode(hljs) {\n    var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n    var GCODE_CLOSE_RE = '\\\\%';\n    var GCODE_KEYWORDS = {\n      $pattern: GCODE_IDENT_RE,\n      keyword: 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n      'EQ LT GT NE GE LE OR XOR'\n    };\n    var GCODE_START = {\n        className: 'meta',\n        begin: '([O])([0-9]+)'\n    };\n    var GCODE_CODE = [\n        hljs.C_LINE_COMMENT_MODE,\n        hljs.C_BLOCK_COMMENT_MODE,\n        hljs.COMMENT(/\\(/, /\\)/),\n        hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\n        hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n        hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n        {\n            className: 'name',\n            begin: '([G])([0-9]+\\\\.?[0-9]?)'\n        },\n        {\n            className: 'name',\n            begin: '([M])([0-9]+\\\\.?[0-9]?)'\n        },\n        {\n            className: 'attr',\n            begin: '(VC|VS|#)',\n            end: '(\\\\d+)'\n        },\n        {\n            className: 'attr',\n            begin: '(VZOFX|VZOFY|VZOFZ)'\n        },\n        {\n            className: 'built_in',\n            begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n            end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\n        },\n        {\n            className: 'symbol',\n            variants: [\n                {\n                    begin: 'N', end: '\\\\d+',\n                    illegal: '\\\\W'\n                }\n            ]\n        }\n    ];\n\n    return {\n        name: 'G-code (ISO 6983)',\n        aliases: ['nc'],\n        // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n        // However, most prefer all uppercase and uppercase is customary.\n        case_insensitive: true,\n        keywords: GCODE_KEYWORDS,\n        contains: [\n            {\n                className: 'meta',\n                begin: GCODE_CLOSE_RE\n            },\n            GCODE_START\n        ].concat(GCODE_CODE)\n    };\n}\n\nmodule.exports = gcode;\n"],"sourceRoot":""}