Files
nc310-syntax/syntaxes/bsnc.tmLanguage.json
2025-08-20 23:45:39 +03:00

425 lines
9.8 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"
}
],
"repository": {
"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"
}
]
}
}
}