{"name":"VSCode GCode Syntax","scopeName":"source.gcode","patterns":[{"include":"#all"}],"repository":{"all":{"patterns":[{"include":"#comments"},{"include":"#bracket-expression"},{"include":"#keywords"},{"include":"#operators"},{"include":"#speedsfeeds"},{"include":"#prognumbers"},{"include":"#coords"},{"include":"#tools"},{"include":"#modifiers"},{"include":"#macrovars"}]},"bracket-expression":{"name":"expression.group","begin":"\\[","end":"\\]","patterns":[{"include":"#all"}],"beginCaptures":{"0":{"name":"punctuation.paren.open"}},"endCaptures":{"0":{"name":"punctuation.paren.close"}}},"comments":{"patterns":[{"name":"comment.gcode","match":"(\\(.+\\))"},{"name":"comment.gcode","begin":";","end":"\\n"}]},"coords":{"patterns":[{"name":"string.gcode","match":"([xX])\\s?(\\-?\\d*\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]))"},{"name":"string.gcode","match":"([yY])\\s?(\\-?\\d*\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]))"},{"name":"invalid.gcode","match":"([zZ])\\s?(\\-?\\d*\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]))"},{"name":"constant.character.escape.gcode","match":"([aAbBcC])\\s?(\\-*\\d?\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]))"}]},"keywords":{"patterns":[{"name":"keyword.control.gcode","match":"(GOTO(?\u003e\\d+))|(IF)|(EQ)|(NE)|(LT)|(GT)|(LE)|(GE)|(DO ?(?\u003e\\d+))|(WHILE)|(WH)|(END ?(?\u003e\\d+))|(AND)|(OR)|(XOR)|(THEN)|(ELSE)|(ENDIF)"},{"name":"constant.numeric.gcode","match":"[gG](1)?5[4-9](.1)?\\s?(P[0-9]{1,3})?"},{"name":"constant.numeric.gcode","match":"[gG]1[1-2][0-9]"},{"name":"constant.numeric.gcode","match":"[gG]15\\s?(H[0-9]{1,2})?"},{"name":"markup.bold.gcode","match":"[gG][0-9]{1,3}(\\.[0-9])?"},{"name":"keyword.operator.quantifier.regexp.gcode","match":"[mM][0-9]{1,3}"},{"name":"string.gcode","match":"([\\%])"}]},"macrovars":{"patterns":[{"name":"variable.other.gcode","match":"[#][0-9]+"},{"name":"variable.other.gcode","match":"[#][\\[].+[\\]]"}]},"modifiers":{"patterns":[{"name":"constant.character.escape.gcode","match":"([iIjJkK])(\\-?\\d*\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]))"},{"name":"support.constant.math.gcode","match":"([qQrR])(\\-?\\d*\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]]))"},{"name":"support.constant.math.gcode","match":"([uUwW])(\\-?\\d*\\.?\\d+\\.?|\\-?\\.?(?=[#\\[]]))"}]},"operators":{"patterns":[{"name":"support.constant.math.gcode","match":"(SIN)|(COS)|(TAN)|(ASIN)|(ACOS)|(ATAN)|(FIX)|(FUP)|(LN)|(ROUND)|(SQRT)"},{"name":"support.constant.math.gcode","match":"(FIX)|(FUP)|(ROUND)|(ABS)|(MOD)"},{"name":"support.constant.math.gcode","match":"(\\+)|(\\*)|(\\/)|(\\*\\*)"},{"name":"invalid.gcode","match":"(\\-)"}]},"prognumbers":{"patterns":[{"name":"constant.numeric.gcode","match":"(^[nN])(\\d+)"},{"name":"string.regexp.gcode","match":"(^[oO])(\\d+)"},{"name":"string.regexp.gcode","match":"([pP])\\s?(\\d?\\.?\\d+\\.?|\\.?(?=[#\\[]))"}]},"speedsfeeds":{"patterns":[{"name":"constant.language.gcode","match":"([sS])\\s?(\\d+|(?=[#\\[]))"},{"name":"constant.language.gcode","match":"([eEfF])\\s?(\\d*\\.?\\d+\\.?|\\.?(?=[#\\[]))"}]},"tools":{"patterns":[{"name":"constant.character.gcode","match":"([dD])\\s?(\\d*\\.?\\d*|(?=[#\\[]))"},{"name":"constant.character.gcode","match":"([hH])\\s?(\\d*\\.?\\d*|(?=[#\\[]))"},{"name":"constant.character.gcode","match":"([tT])\\s?(\\d*\\.?\\d*|(?=[#\\[]))"}]}}}