Files
nc310-syntax/syntaxes/bsnc.tmLanguage.json

490 lines
12 KiB
JSON

{
"scopeName": "source.bsnc",
"patterns": [
{
"include": "#lineComments"
},
{
"include": "#tripleCodes"
},
{
"include": "#uao"
},
{
"include": "#ucg"
},
{
"include": "#variablesE"
},
{
"include": "#toolChange"
},
{
"include": "#spindleWithM"
},
{
"include": "#gMoves"
},
{
"include": "#coords"
},
{
"include": "#cycles"
},
{
"include": "#gArcs"
},
{
"include": "#arcParams"
},
{
"include": "#mCodes"
},
{
"include": "#rptCycle"
},
{
"include": "#gCodesValid"
},
{
"include": "#comments"
},
{ "include": "#mathFunctions" },
{ "include": "#branchCodes" }
],
"repository": {
"branchCodes": {
"patterns": [
{
"begin": "\\((BNC|BGT|BLT|BEQ|BNE|BGE|BLE)",
"beginCaptures": {
"1": { "name": "keyword.control.branch.bsnc" }
},
"end": "\\)",
"endCaptures": {
"0": { "name": "punctuation.section.parens.end.bsnc" }
},
"patterns": [
{ "match": ",", "name": "punctuation.separator.comma.bsnc" },
{ "match": "(E\\d+)", "name": "variable.other.e-variable.bsnc" },
{ "match": "[A-Z_][A-Z0-9_]*", "name": "entity.name.label.bsnc" },
{ "match": "[-+]?\\d+(?:\\.\\d+)?", "name": "constant.numeric.branch-arg.bsnc" }
]
}
]
},
"mathFunctions": {
"patterns": [
{
"begin": "\\b(SIN|COS|TAN|ARS|ARC|ART|SQR|ABS|INT|NEG|MOD|FEL)\\s*\\(",
"beginCaptures": {
"1": {
"name": "support.function.math.bsnc"
},
"0": {
"name": "punctuation.section.parens.begin.bsnc"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.parens.end.bsnc"
}
},
"patterns": [
{
"match": ",",
"name": "punctuation.separator.comma.bsnc"
},
{
"match": "/",
"name": "keyword.operator.divide.bsnc"
},
{
"match": "(E\\d+)",
"name": "variable.other.e-variable.bsnc"
},
{
"match": "[-+]?\\d+(?:\\.\\d+)?",
"name": "constant.numeric.math-arg.bsnc"
},
{
"match": "[A-Z]",
"name": "variable.parameter.math-symbol.bsnc"
}
]
}
]
},
"lineComments": {
"patterns": [
{
"match": ";.*$",
"name": "comment.line.semicolon.bsnc"
}
]
},
"tripleCodes": {
"patterns": [
{
"begin": "(\\()([A-Z]{3})",
"beginCaptures": {
"1": {
"name": "punctuation.section.parens.begin.nc310"
},
"2": {
"name": "entity.name.function.triplecode.nc310"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.parens.end.nc310"
}
},
"patterns": [
{
"match": ",",
"name": "punctuation.separator.comma.nc310"
},
{
"match": "\"[^\"]*\"",
"name": "string.quoted.double.nc310"
},
{
"match": "'[^']*'",
"name": "string.quoted.single.nc310"
},
{
"match": "(E\\d+)",
"name": "variable.other.e-variable.nc310"
},
{
"match": "([XYZ])([-+]?\\d+(?:\\.\\d+)?)",
"captures": {
"1": {
"name": "variable.parameter.axis.nc310"
},
"2": {
"name": "constant.numeric.axis-value.nc310"
}
}
},
{
"match": "([-+]?\\d+(?:\\.\\d+)?)",
"name": "constant.numeric.triplecode-arg.nc310"
}
]
}
]
},
"uao": {
"patterns": [
{
"match": "\\((UAO),(\\-?\\d+(?:\\.\\d+)?)\\)",
"captures": {
"1": {
"name": "entity.name.function.uao.bsnc"
},
"2": {
"name": "constant.numeric.uao-value.bsnc"
}
}
}
]
},
"ucg": {
"patterns": [
{
"match": "\\((UCG),(\\-?\\d+(?:\\.\\d+)?),([XYZ])([-+]?\\d+(?:\\.\\d+)?)([XYZ])([-+]?\\d+(?:\\.\\d+)?),([XYZ])([-+]?\\d+(?:\\.\\d+)?),(\\-?\\d+(?:\\.\\d+)?),(\\-?\\d+(?:\\.\\d+)?)\\)",
"captures": {
"1": {
"name": "entity.name.function.ucg.bsnc"
},
"2": {
"name": "constant.numeric.ucg-main.bsnc"
},
"3": {
"name": "variable.parameter.axis.bsnc"
},
"4": {
"name": "constant.numeric.axis-value.bsnc"
},
"5": {
"name": "variable.parameter.axis.bsnc"
},
"6": {
"name": "constant.numeric.axis-value.bsnc"
},
"7": {
"name": "variable.parameter.axis.bsnc"
},
"8": {
"name": "constant.numeric.axis-value.bsnc"
},
"9": {
"name": "constant.numeric.ucg-extra.bsnc"
},
"10": {
"name": "constant.numeric.ucg-extra.bsnc"
}
}
}
]
},
"mCodes": {
"patterns": [
{
"match": "\\b(M)(0?[0-9]{1,2})\\b",
"captures": {
"1": {
"name": "support.function.mcode.bsnc"
},
"2": {
"name": "constant.numeric.mcode-value.bsnc"
}
}
}
]
},
"variablesE": {
"patterns": [
{
"match": "\\b(E\\d+)(=)([-+]?[0-9]+(?:\\.[0-9]+)?)\\b",
"captures": {
"1": {
"name": "variable.other.e-variable.bsnc"
},
"2": {
"name": "keyword.operator.assignment.bsnc"
},
"3": {
"name": "constant.numeric.e-value.bsnc"
}
}
},
{
"match": "\\b(E\\d+)\\b",
"captures": {
"1": {
"name": "variable.other.e-variable.bsnc"
}
}
}
]
},
"toolChange": {
"patterns": [
{
"match": "\\b(T\\d+)(\\.\\d+)?(M6)\\b",
"captures": {
"1": {
"name": "entity.name.function.tool-number.bsnc"
},
"2": {
"name": "constant.numeric.tool-offset.bsnc"
},
"3": {
"name": "support.function.mcode.bsnc"
}
}
}
]
},
"spindleWithM": {
"patterns": [
{
"match": "\\b(S)([0-9]+(?:\\.[0-9]+)?)(?:\\s*|)(M)(0?[0-9]{1,2})\\b",
"captures": {
"1": {
"name": "entity.name.function.spindle-speed.bsnc"
},
"2": {
"name": "constant.numeric.spindle-speed-value.bsnc"
},
"3": {
"name": "support.function.mcode.bsnc"
},
"4": {
"name": "constant.numeric.mcode-value.bsnc"
}
}
}
]
},
"gMoves": {
"patterns": [
{
"match": "(G0)(?=[XYZF]|$)",
"captures": {
"1": {
"name": "keyword.control.motion.rapid.bsnc"
}
}
},
{
"match": "(G1)(?=[XYZEF]|$)",
"captures": {
"1": {
"name": "keyword.control.motion.linear.bsnc"
}
}
}
]
},
"gArcs": {
"patterns": [
{
"match": "(G2)(?=[XYZRIJEF]|$)",
"captures": {
"1": {
"name": "keyword.control.motion.arc.cw.bsnc"
}
}
},
{
"match": "(G3)(?=[XYZRIJEF]|$)",
"captures": {
"1": {
"name": "keyword.control.motion.arc.ccw.bsnc"
}
}
}
]
},
"arcParams": {
"patterns": [
{
"match": "([XYZ])([-+]?[0-9]+(?:\\.[0-9]+)?)",
"captures": {
"1": {
"name": "variable.parameter.axis.bsnc"
},
"2": {
"name": "constant.numeric.axis-value.bsnc"
}
}
},
{
"match": "([IJ])([-+]?[0-9]+(?:\\.[0-9]+)?)",
"captures": {
"1": {
"name": "variable.parameter.arc-center.bsnc"
},
"2": {
"name": "constant.numeric.arc-center-value.bsnc"
}
}
},
{
"match": "(R)([-+]?[0-9]+(?:\\.[0-9]+)?)",
"captures": {
"1": {
"name": "variable.parameter.arc-radius.bsnc"
},
"2": {
"name": "constant.numeric.arc-radius-value.bsnc"
}
}
},
{
"match": "(F)([0-9]+(?:\\.[0-9]+)?)",
"captures": {
"1": {
"name": "variable.parameter.feedrate.bsnc"
},
"2": {
"name": "constant.numeric.feedrate-value.bsnc"
}
}
},
{
"match": "(E\\d+)",
"captures": {
"1": {
"name": "variable.other.e-variable.bsnc"
}
}
}
]
},
"coords": {
"patterns": [
{
"match": "([XYZ])([-+]?[0-9]+(?:\\.[0-9]+)?)",
"captures": {
"1": {
"name": "variable.parameter.axis.bsnc"
},
"2": {
"name": "constant.numeric.axis-value.bsnc"
}
}
},
{
"match": "(F)([0-9]+(?:\\.[0-9]+)?)",
"captures": {
"1": {
"name": "variable.parameter.feedrate.bsnc"
},
"2": {
"name": "constant.numeric.feedrate-value.bsnc"
}
}
},
{
"match": "(E\\d+)",
"captures": {
"1": {
"name": "variable.other.e-variable.bsnc"
}
}
}
]
},
"cycles": {
"patterns": [
{
"name": "keyword.control.cycle.rpt.bsnc",
"match": "\\(RPT\\s*,?\\s*E?\\d*\\)"
},
{
"name": "keyword.control.cycle.urt.bsnc",
"match": "\\(URT\\s*,?\\s*\\d*\\)"
},
{
"name": "keyword.control.cycle.erp.bsnc",
"match": "\\(ERP\\)"
}
]
},
"rptCycle": {
"patterns": [
{
"match": "\\(RPT\\s*,?\\s*E?\\d*\\)",
"name": "keyword.control.cycle.rpt.start.bsnc"
},
{
"match": "\\(ERP\\)",
"name": "keyword.control.cycle.rpt.end.bsnc"
}
]
},
"gCodesValid": {
"patterns": [
{
"match": "\\b(G(?:0[0-9]|1|2|3|4|6|9|17|18|19|20|21|27|28|29|33|34|35|40|41|42|70|71|72|73|74|79|80|81|82|83|84|85|86|89|90|91|93|94|95|96|97))\\b",
"name": "keyword.control.gcode.valid.bsnc"
}
]
},
"comments": {
"patterns": [
{
"match": "\\([^A-Z]{3}.*?\\)",
"name": "comment.block.bsnc"
}
]
}
}
}