diff --git a/package.json b/package.json index 6fa2e48..c10aa24 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,12 @@ "name": "nc310-syntax", "displayName": "Balt-System PLC Syntax", "description": "Подсветка, цвета и сниппеты Baltsystem PLC", - "version": "1.0.0", + "version": "1.0.1", "publisher": "andrewkydev", + "repository": { + "type": "git", + "url": "https://github.com/andrewkydev/nc310-syntax" + }, "pricing": "Free", "engines": { "vscode": "^1.45.0" diff --git a/snippets/bsnc.json b/snippets/bsnc.json index 789a43b..2515eb0 100644 --- a/snippets/bsnc.json +++ b/snippets/bsnc.json @@ -1,27 +1,316 @@ { "UCG template": { "prefix": "ucg", - "body": ["(UCG,2,X-33X33,Y-33Y33,Z-15Z0,1,-3)"], + "body": [ + "(UCG,2,X-33X33,Y-33Y33,Z-15Z0,1,-3)" + ], "description": "Шаблон UCG" }, "URT cycle": { "prefix": "urt", - "body": ["(URT,${1:0})"], + "body": [ + "(URT,${1:0})" + ], "description": "Цикл URT" }, "RPT cycle": { "prefix": "rpt", - "body": ["(RPT,${1:E0})"], + "body": [ + "(RPT,${1:E0})" + ], "description": "Цикл RPT" }, "ERP": { "prefix": "erp", - "body": ["(ERP)"], + "body": [ + "(ERP)" + ], "description": "Маркер ERP" }, "E variable": { "prefix": "evar", - "body": ["E${1:30}=${2:0}"], + "body": [ + "E${1:30}=${2:0}" + ], "description": "Переменная E" + }, + "BNC jump": { + "prefix": "bnc", + "body": [ + "(BNC,${1:LABEL})" + ], + "description": "Безусловный переход к метке" + }, + "BGT jump": { + "prefix": "bgt", + "body": [ + "(BGT,${1:VAR1},${2:VAR2},${3:LABEL})" + ], + "description": "Переход, если VAR1 > VAR2" + }, + "BLT jump": { + "prefix": "blt", + "body": [ + "(BLT,${1:VAR1},${2:VAR2},${3:LABEL})" + ], + "description": "Переход, если VAR1 < VAR2" + }, + "BEQ jump": { + "prefix": "beq", + "body": [ + "(BEQ,${1:VAR1},${2:VAR2},${3:LABEL})" + ], + "description": "Переход, если VAR1 = VAR2" + }, + "BNE jump": { + "prefix": "bne", + "body": [ + "(BNE,${1:VAR1},${2:VAR2},${3:LABEL})" + ], + "description": "Переход, если VAR1 ≠ VAR2" + }, + "BGE jump": { + "prefix": "bge", + "body": [ + "(BGE,${1:VAR1},${2:VAR2},${3:LABEL})" + ], + "description": "Переход, если VAR1 ≥ VAR2" + }, + "BLE jump": { + "prefix": "ble", + "body": [ + "(BLE,${1:VAR1},${2:VAR2},${3:LABEL})" + ], + "description": "Переход, если VAR1 ≤ VAR2" + }, + "G0 move": { + "prefix": "g0", + "body": [ + "G0X0Y0Z0" + ], + "description": "Линейное перемещение по плоскостям XYZ на ускоренной подаче" + }, + "G1 move": { + "prefix": "g1", + "body": [ + "G1 X${1:0.0} Y${2:0.0} Z${3:0.0} F${4:200}" + ], + "description": "Линейное перемещение по плоскостям XYZ на рабочей подаче" + }, + // thread + "G33 — постоянный шаг (фронтальная)": { + "prefix": "g33", + "body": [ + "G33 Z${1:3} K${2:6}" + ], + "description": "Фронтальная резьба с постоянным шагом" + }, + "G33 — многозаходная резьба (2-й заход)": { + "prefix": "g33r", + "body": [ + "G33 Z${1:3} K${2:6} R${3:120}" + ], + "description": "Многозаходная резьба — второй заход" + }, + "G33 — многозаходная резьба (3-й заход)": { + "prefix": "g33r3", + "body": [ + "G33 Z${1:3} K${2:6} R${3:240}" + ], + "description": "Многозаходная резьба — третий заход" + }, + "G33 — переменный шаг (возрастающий)": { + "prefix": "g33i+", + "body": [ + "G33 Z${1:3} K${2:6} I${3:1}" + ], + "description": "Цилиндрическая резьба с возрастающим шагом" + }, + "G33 — переменный шаг (убывающий)": { + "prefix": "g33i-", + "body": [ + "G33 Z${1:3} K${2:6} I${3:-1}" + ], + "description": "Цилиндрическая резьба с уменьшающимся шагом" + }, + "G33 — коническая резьба": { + "prefix": "g33u", + "body": [ + "G33 U${1:3} K${2:6}" + ], + "description": "Коническая резьба по оси U" + }, + "G33 — переменный шаг + отклонение": { + "prefix": "g33ir", + "body": [ + "G33 Z${1:3} K${2:6} I${3:1} R${4:120}" + ], + "description": "Многозаходная резьба с переменным шагом" + }, + "G34 — постоянный шаг (фронтальная)": { + "prefix": "g34", + "body": [ + "G34 Z${1:3} K${2:6}" + ], + "description": "Фронтальная резьба с постоянным шагом" + }, + "G34 — многозаходная резьба (2-й заход)": { + "prefix": "g34r", + "body": [ + "G34 Z${1:3} K${2:6} R${3:120}" + ], + "description": "Многозаходная резьба — второй заход" + }, + "G34 — многозаходная резьба (3-й заход)": { + "prefix": "g34r3", + "body": [ + "G34 Z${1:3} K${2:6} R${3:240}" + ], + "description": "Многозаходная резьба — третий заход" + }, + "G34 — переменный шаг (возрастающий)": { + "prefix": "g34i+", + "body": [ + "G34 Z${1:3} K${2:6} I${3:1}" + ], + "description": "Цилиндрическая резьба с возрастающим шагом" + }, + "G34 — переменный шаг (убывающий)": { + "prefix": "g34i-", + "body": [ + "G34 Z${1:3} K${2:6} I${3:-1}" + ], + "description": "Цилиндрическая резьба с уменьшающимся шагом" + }, + "G34 — коническая резьба": { + "prefix": "g34u", + "body": [ + "G34 U${1:3} K${2:6}" + ], + "description": "Коническая резьба по оси U" + }, + "G34 — переменный шаг + отклонение": { + "prefix": "g34ir", + "body": [ + "G34 Z${1:3} K${2:6} I${3:1} R${4:120}" + ], + "description": "Многозаходная резьба с переменным шагом" + }, + "G34 — с торможением (G09)": { + "prefix": "g34g09", + "body": [ + "G34 Z${1:3} K${2:6} G09" + ], + "description": "Резьба с торможением в конце" + }, + + "G17 — плоскость XY": { + "prefix": "g17", + "body": [ + "G17" + ], + "description": "Плоскость интерполяции XY" + }, + "G18 — плоскость XZ": { + "prefix": "g18", + "body": [ + "G18" + ], + "description": "Плоскость интерполяции XZ" + }, + "G19 — плоскость YZ": { + "prefix": "g19", + "body": [ + "G19" + ], + "description": "Плоскость интерполяции YZ" + }, + + "G83 — цикл с дроблением стружки": { + "prefix": "g83", + "body": ["G83 R${1:5} Z${2:-15} I${3:2} K${4:0.8} J${5:1.0}"], + "description": "Глубокое сверление с дроблением стружки" + }, + "G83 — цикл без разгрузки (TMR)": { + "prefix": "g83tmr", + "body": ["G83 R${1:5} Z${2:-15} I${3:2} TMR=${4:2}"], + "description": "Глубокое сверление с выдержкой времени" + }, + "G84 — резьба с датчиком": { + "prefix": "g84", + "body": ["G84 R${1:5} Z${2:-15} K${3:2}"], + "description": "Резьбонарезание с датчиком" + }, + "G84 — резьба без датчика (с подачей)": { + "prefix": "g84f", + "body": ["G84 R${1:5} Z${2:-15} F${3:280}"], + "description": "Резьбонарезание без датчика, с подачей" + }, + "G90 — абсолютная система": { + "prefix": "g90", + "body": ["G90"], + "description": "Программирование в абсолютной системе координат" + }, + "G91 — приращения": { + "prefix": "g91", + "body": ["G91"], + "description": "Программирование по приращениям" + }, + "G79 — относительно нуля станка": { + "prefix": "g79", + "body": ["G79 X${1:0} Z${2:0}"], + "description": "Программирование относительно нуля станка" + }, + + "CLS — вызов подпрограммы": { + "prefix": "cls", + "body": ["(CLS,${1:P800}/${2:MP2})"], + "description": "Вызов подпрограммы из памяти MPx" + }, + "CLS — вызов без указания памяти": { + "prefix": "cls0", + "body": ["(CLS,${1:P800})"], + "description": "Вызов подпрограммы с памятью по умолчанию" + }, + "BNC — безусловный переход": { + "prefix": "bnc", + "body": ["(BNC,${1:LABEL})"], + "description": "Безусловный переход к метке" + }, + "BGT — если VAR1 > VAR2": { + "prefix": "bgt", + "body": ["(BGT,${1:VAR1},${2:VAR2},${3:LABEL})"], + "description": "Переход, если VAR1 больше VAR2" + }, + "BLT — если VAR1 < VAR2": { + "prefix": "blt", + "body": ["(BLT,${1:VAR1},${2:VAR2},${3:LABEL})"], + "description": "Переход, если VAR1 меньше VAR2" + }, + "BEQ — если VAR1 = VAR2": { + "prefix": "beq", + "body": ["(BEQ,${1:VAR1},${2:VAR2},${3:LABEL})"], + "description": "Переход, если VAR1 равен VAR2" + }, + "BNE — если VAR1 ≠ VAR2": { + "prefix": "bne", + "body": ["(BNE,${1:VAR1},${2:VAR2},${3:LABEL})"], + "description": "Переход, если VAR1 не равен VAR2" + }, + "BGE — если VAR1 ≥ VAR2": { + "prefix": "bge", + "body": ["(BGE,${1:VAR1},${2:VAR2},${3:LABEL})"], + "description": "Переход, если VAR1 ≥ VAR2" + }, + "BLE — если VAR1 ≤ VAR2": { + "prefix": "ble", + "body": ["(BLE,${1:VAR1},${2:VAR2},${3:LABEL})"], + "description": "Переход, если VAR1 ≤ VAR2" + }, + "DIS — описание кадра": { + "prefix": "dis", + "body": ["(DIS,\"${1:Описание}\")"], + "description": "Комментарий или описание кадра" } -} + +} \ No newline at end of file diff --git a/syntaxes/bsnc.tmLanguage.json b/syntaxes/bsnc.tmLanguage.json index 7662cc9..f15799e 100644 --- a/syntaxes/bsnc.tmLanguage.json +++ b/syntaxes/bsnc.tmLanguage.json @@ -48,9 +48,74 @@ }, { "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": [ {