           name: 'constant.numeric.g-code'
     },
     {
-      comment: 'Keywords: groups'
-      match: '\\b((?:UNIT)|(?:END_OF_UNIT))\\b'
+      comment: 'feed rate'
+      match: '\\b(F)(\\d+(?:\\.\\d+)?)\\b'
+      captures:
+        1:
+          name: 'keyword.operator.g-code'
+        2:
+          name: 'constant.numeric.g-code'
+    },
+    {
+      comment: 'Keyword: Unit start'
+      match: '\\b(UNIT ID)'
+      name: 'keyword.control.g-code'
+    },
+    {
+      comment: 'Keyword: Unit end'
+      match: '\\b(END_OF_UNIT) (S)(\\d+)'
       captures:
         1:
           name: 'keyword.control.g-code'
+        2:
+          name: 'keyword.operator.g-code'
+        3:
+          name: 'constant.numeric.g-code'
     },
     {
-      comment: 'Keywords: CNCpilot od ManualPlus German'
+      comment: 'Keywords: Groups German'
       match: '\\b((?:PROGRAMMKOPF)|(?:REVOLVER)|(?:ROHTEIL)|(?:FERTIGTEIL)|(?:BEARBEITUNG))\\b'
-      captures:
-        1:
-          name: 'keyword.control.g-code'
+      name: 'keyword.control.g-code'
+    },
+    {
+      comment: 'Keywords: Groups English'
+      match: '\\b((?:CONST)|(?:VAR)|(?:MACHINING))\\b'
+      name: 'keyword.control.g-code'
     },
     {
       comment: 'Keywords: GLOBAL'
       match: '\\b((?:ENDE)|(?:RETURN))\\b'
-      captures:
-        1:
-          name: 'keyword.control.g-code'
+      name: 'keyword.control.g-code'
     },
     {
       comment: 'Keywords: Flow control - Part1'
-      match: '\\b((?:IF)|(?:THEN)|(?:ELSE)|(?:ENDIF)|(?:WHILE)|(?:ENDWHILE)|(?:FOR)|(?:TO)|(?:bENDFOR))\\b'
-      captures:
-        1:
-          name: 'keyword.control.g-code'
+      match: '\\b((?:IF)|(?:OR)|(?:AND)|(?:THEN)|(?:ELSE)|(?:ENDIF))\\b'
+      name: 'keyword.control.g-code'
     },
     {
-      comment: 'Keywords: Flow control - Part2'
+      comment: 'Keywords: Flow control - Loop'
+      match: '\\b((?:WHILE)|(?:ENDWHILE)|(?:FOR)|(?:TO)|(?:bENDFOR))\\b'
+      name: 'keyword.control.g-code'
+    },
+    {
+      comment: 'Keywords: Flow control - Switch'
       match: '\\b((?:SWITCH)|(?:CASE)|(?:ENDSWITCH)|(?:BREAK)|(?:DEFAULT))\\b'
-      captures:
-        1:
-          name: 'keyword.control.g-code'
+      name: 'keyword.control.g-code'
+    },
+    {
+      comment: 'Keywords: Functions'
+      match: '\\b((?:INPUT)|(?:PRINT)|(?:PARA)|(?:DEF)|(?:NDEF)|(?:INT))\\b'
+      name: 'keyword.control.g-code'
     },
 ]

          name: 'constant.numeric.g-code'
    },
    {
      comment: 'circle center offset'
      match: '\\b([IJK])([\\+-]?\\d+(?:\\.\\d+)?)\\b'
      captures:
        1:
          name: 'keyword.operator.g-code'

        name: 'comment.block.g-code'
    },
    {
        comment: 'program name'
        match: '(%)([\\w\\d_]+\\.[ncsNCS]+)(\\s+".*")?'
        captures:
            1:
                name: 'keyword.control.g-code'
