Warning, /frameworks/syntax-highlighting/data/syntax/gcode.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language
0003 [
0004   <!--
0005     single . as number
0006     1.2. is not a number (two .)
0007     spaces are ignored (1 2 . 3 4 is a valid number)
0008   -->
0009   <!ENTITY number "&cmd_number;|[.]\s*(\d[\s\d]*+)?(?![.])">
0010   <!ENTITY cmd_number "\d[\s\d]*+([.][\s\d]*+)?(?![.])">
0011   <!ENTITY int "\d[\s\d]*+(?![.])">
0012 ]>
0013 <!--
0014 
0015   G-code syntax highlighting for KatePart
0016 
0017   Copy this file to :  ~/.kde/share/apps/katepart/syntax/
0018 
0019   Copyright © 2016 by Fernand Veilleux (fernveilleux@gmail.com)
0020 
0021   This library is free software; you can redistribute it and/or
0022         modify it under the terms of the GNU Library General Public
0023         License as published by the Free Software Foundation; either
0024         version 2 of the License, or (at your option) any later version.
0025 
0026         This library is distributed in the hope that it will be useful,
0027         but WITHOUT ANY WARRANTY; without even the implied warranty of
0028         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0029         Library General Public License for more details.
0030 
0031         You should have received a copy of the GNU Library General Public
0032         License along with this library; if not, write to the
0033         Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0034         Boston, MA  02110-1301, USA.
0035 
0036 -->
0037 <language name="G-Code"
0038         version="12"
0039         kateversion="5.0"
0040         section="3D"
0041         extensions="*.ngc;*.gcode"
0042         mimetype="text/ngc"
0043         author="Fernand Veilleux (fernveilleux@gmail.com)"
0044         license="LGPLv2+">
0045 
0046   <!-- https://reprap.org/wiki/G-code -->
0047   <!-- http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Example_G-Code_Programs -->
0048   <!-- https://docs.duet3d.com/en/User_manual/Reference/Gcode_meta_commands -->
0049 
0050   <highlighting>
0051     <list name="operators">
0052       <item>and</item>
0053       <item>or</item>
0054       <item>xor</item>
0055       <item>eq</item>
0056       <item>ne</item>
0057       <item>gt</item>
0058       <item>ge</item>
0059       <item>lt</item>
0060       <item>le</item>
0061       <item>mod</item>
0062     </list>
0063 
0064     <list name="functions">
0065       <item>abs</item>
0066       <item>acos</item>
0067       <item>asin</item>
0068       <item>atan</item>
0069       <item>atan2</item>
0070       <item>cos</item>
0071       <item>datetime</item>
0072       <item>degrees</item>
0073       <item>exists</item>
0074       <item>exp</item>
0075       <item>fix</item>
0076       <item>floor</item>
0077       <item>fup</item>
0078       <item>isnan</item>
0079       <item>ln</item>
0080       <item>max</item>
0081       <item>min</item>
0082       <item>mod</item>
0083       <item>radians</item>
0084       <item>random</item>
0085       <item>round</item>
0086       <item>sin</item>
0087       <item>sqrt</item>
0088       <item>tan</item>
0089     </list>
0090 
0091     <list name="o_sub">
0092       <item>sub</item>
0093       <item>endsub</item>
0094       <item>call</item>
0095       <item>return</item>
0096     </list>
0097 
0098     <list name="keyword">
0099       <item>do</item>
0100       <item>while</item>
0101       <item>endwhile</item>
0102       <item>repeat</item>
0103       <item>endrepeat</item>
0104       <item>break</item>
0105       <item>continue</item>
0106       <item>if</item>
0107       <item>elseif</item>
0108       <item>else</item>
0109       <item>endif</item>
0110       <!-- meta command -->
0111       <item>abort</item>
0112       <item>echo</item>
0113       <item>var</item>
0114       <item>global</item>
0115       <item>set</item>
0116     </list>
0117 
0118     <list name="named constants">
0119       <item>false</item>
0120       <item>iterations</item>
0121       <item>line</item>
0122       <item>null</item>
0123       <item>pi</item>
0124       <item>result</item>
0125       <item>true</item>
0126     </list>
0127 
0128     <contexts>
0129       <context name="Alert" attribute="Alert" lineEndContext="#pop" fallthrough="true" fallthroughContext="alert">
0130         <RegExpr String="^\s*[nN]\s*&int;" attribute="Line Number" column="0"/>
0131         <DetectSpaces attribute="Normal Text"/>
0132         <DetectChar char="%" attribute="M-word"/>
0133         <AnyChar String="[]" attribute="Brackets"/>
0134         <DetectChar char="(" lookAhead="1" context="parenthese"/>
0135         <DetectChar char="#" lookAhead="1" context="hash1"/>
0136         <AnyChar String="+-*/=:" attribute="Operator"/>
0137         <DetectChar char="&quot;" attribute="String" context="string"/>
0138         <DetectChar char="{" attribute="Operator" context="expression"/>
0139         <DetectChar char=";" attribute="Comment" context="comment"/>
0140         <RegExpr String="&number;" attribute="Number"/>
0141         <RegExpr String="[abcu-z](?=[\s+\-\d#\[.{;]|$)" insensitive="1" attribute="Coordinate"/>
0142         <RegExpr String="[gG]\s*(&cmd_number;|(?=[\[#]))" attribute="G-word"/>
0143         <RegExpr String="[deh-lpqr@^](?=[\s+\-\d#\[.&quot;{;]|$)" insensitive="1" attribute="G-options"/>
0144         <!-- exlude M1nn commands -->
0145         <RegExpr String="[mM]\s*((?!1\s*\d\s*\d\s*(?=[^\d.]|$))&cmd_number;|[+#\[])" attribute="M-word"/>
0146         <RegExpr String="[fF](?=\s*[+\d#\[.&quot;{])|[tsTS](?=\s*[+\d#\[&quot;{])" attribute="Tool"/>
0147         <RegExpr String="[mM]&cmd_number;" attribute="M-word (user)"/>
0148         <RegExpr String="[oO](\s*(&number;|&lt;\s*+[^>]+&gt;|$|(?=;))|\s+|(?=;))" attribute="O-word"/>
0149         <keyword String="functions" attribute="Function"/>
0150         <keyword String="operators" attribute="Operator"/>
0151         <keyword String="o_sub" attribute="Sub-program"/>
0152         <keyword String="keyword" attribute="Keyword" context="meta_command"/>
0153       </context>
0154 
0155       <context name="parenthese" attribute="Alert" lineEndContext="#pop">
0156         <RegExpr String="\(\s*(PRINT|DEBUG|MSG|AXIS|(PROBE(CLOSE|OPEN))|(LOG(OPEN|CLOSE|APPEND|[\s,])))[^\)]*\)"
0157           insensitive="1" attribute="Message" context="#pop"/>
0158         <RangeDetect char="(" char1=")" attribute="Comment" context="#pop"/>
0159         <DetectChar char="(" attribute="Alert" context="#pop!alert"/>
0160       </context>
0161 
0162       <context name="hash1" attribute="Alert" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!alert">
0163         <RegExpr String="#\s*(&int;|&lt;\s*_[^>]*&gt;)" attribute="Param (global)" context="#pop"/>
0164         <RegExpr String="#(?=\s*+(\[|#\s*[&lt;\[]))|#\s*+(#(?!\s*#)|&lt;\s*+[^>]+&gt;)" attribute="Param (local)" context="#pop"/>
0165       </context>
0166 
0167       <context name="string" attribute="String" lineEndContext="#pop">
0168         <Detect2Chars char="&quot;" char1="&quot;" lookAhead="1" context="quot1"/>
0169         <DetectChar char="&quot;" attribute="String" context="#pop"/>
0170         <DetectChar char="'" attribute="Special String Char"/>
0171         <RegExpr String="[^'&quot;]+" attribute="String"/>
0172       </context>
0173       <context name="quot1" attribute="String" lineEndContext="#pop">
0174         <DetectChar char="&quot;" attribute="Special String Char" context="quot2"/>
0175       </context>
0176       <context name="quot2" attribute="String" lineEndContext="#pop">
0177         <DetectChar char="&quot;" attribute="String" context="#pop#pop"/>
0178       </context>
0179 
0180       <context name="expression" attribute="Normal Text" lineEndContext="#pop">
0181         <keyword String="functions" attribute="Function"/>
0182         <DetectIdentifier attribute="Normal Text"/>
0183         <DetectSpaces attribute="Normal Text"/>
0184         <DetectChar char="}" attribute="Operator" context="#pop"/>
0185         <IncludeRules context="expression_common"/>
0186       </context>
0187 
0188       <context name="expression_common" attribute="Normal Text" lineEndContext="#pop">
0189         <AnyChar String="+-*/=:!#&lt;>&amp;|^,?" attribute="Operator"/>
0190         <AnyChar String="[]" attribute="Brackets"/>
0191         <DetectChar char="&quot;" attribute="String" context="string"/>
0192         <DetectChar char="{" attribute="Operator" context="expression"/>
0193         <DetectChar char=";" attribute="Comment" context="comment"/>
0194         <RegExpr String="&cmd_number;|[.]\s*&int;" attribute="Number"/>
0195         <Int attribute="Alert"/>
0196       </context>
0197 
0198       <context name="meta_command" attribute="Normal Text" lineEndContext="#pop">
0199         <DetectSpaces attribute="Normal Text"/>
0200         <keyword String="named constants" attribute="Constant"/>
0201         <keyword String="functions" attribute="Function"/>
0202         <keyword String="operators" attribute="Operator"/>
0203         <DetectIdentifier attribute="Normal Text"/>
0204         <DetectChar char="#" lookAhead="1" context="hash1"/>
0205         <DetectChar char="(" lookAhead="1" context="parenthese"/>
0206         <IncludeRules context="expression_common"/>
0207       </context>
0208 
0209       <context name="alert" attribute="Alert" lineEndContext="#pop">
0210         <RegExpr String="[^;(]+" attribute="Alert"/>
0211         <DetectChar char=";" attribute="Comment" context="comment"/>
0212         <DetectChar char="(" lookAhead="1" context="parenthese"/>
0213       </context>
0214 
0215       <context name="comment" attribute="Comment" lineEndContext="#pop">
0216         <DetectSpaces/>
0217         <IncludeRules context="##Comments"/>
0218         <DetectIdentifier/>
0219       </context>
0220     </contexts>
0221 
0222     <itemDatas>
0223       <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
0224       <itemData name="Brackets" defStyleNum="dsNormal" spellChecking="0"/>
0225       <itemData name="Comment" defStyleNum="dsComment"/>
0226       <itemData name="Coordinate" defStyleNum="dsNormal" color="#A57800" bold="1" italic="0" spellChecking="0"/>
0227       <itemData name="Function" defStyleNum="dsFunction" color="#800080" bold="1" italic="1" spellChecking="0"/>
0228       <itemData name="G-options" defStyleNum="dsNormal" color="#800080"  bold="1" italic="0" spellChecking="0"/>
0229       <itemData name="G-word" defStyleNum="dsNormal" selColor="#FFFFFF"  bold="1" italic="0" spellChecking="0"/>
0230       <itemData name="Keyword" defStyleNum="dsNormal" bold="1" italic="1" spellChecking="0"/>
0231       <itemData name="Line Number" defStyleNum="dsComment" spellChecking="0"/>
0232       <itemData name="Message" defStyleNum="dsNormal" italic="1"/>
0233       <itemData name="M-word" defStyleNum="dsNormal" color="#A07400" bold="0" italic="0" spellChecking="0"/>
0234       <itemData name="M-word (user)" defStyleNum="dsNormal" color="#A07400" bold="1" italic="1" spellChecking="0"/>
0235       <itemData name="String" defStyleNum="dsString"/>
0236       <itemData name="Special String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
0237       <itemData name="Number" defStyleNum="dsDecVal" color="#A64C00" bold="1" italic="0" spellChecking="0"/>
0238       <itemData name="Operator" defStyleNum="dsOperator" color="#000080" bold="1" italic="0" spellChecking="0"/>
0239       <itemData name="O-word" defStyleNum="dsControlFlow" color="#BB7B40" bold="0" italic="0" spellChecking="0"/>
0240       <itemData name="Param (global)" defStyleNum="dsVariable" color="#149E05" bold="0" italic="0" spellChecking="0"/>
0241       <itemData name="Param (local)" defStyleNum="dsVariable" color="#0950AB" bold="0" italic="0" spellChecking="0"/>
0242       <itemData name="Sub-program" defStyleNum="dsKeyword" color="#700070" bold="0" italic="0" spellChecking="0"/>
0243       <itemData name="Tool" defStyleNum="dsNormal" color="#0000D6" bold="1" italic="0" spellChecking="0"/>
0244       <itemData name="Alert" defStyleNum="dsError" spellChecking="0"/>
0245       <itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>
0246     </itemDatas>
0247   </highlighting>
0248 
0249   <general>
0250     <folding indentationsensitive="1"/>
0251     <comments>
0252       <comment name="singleLine" start=";"/>
0253     </comments>
0254     <keywords casesensitive="0"/>
0255   </general>
0256 </language>
0257 <!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->