]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/tp.js
Initial commit.
[flow-web.git] / static / highlight / languages / tp.js
1 /*! `tp` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: TP
8 Author: Jay Strybis <jay.strybis@gmail.com>
9 Description: FANUC TP programming language (TPP).
10 Category: hardware
11 */
12
13 function tp(hljs) {
14 const TPID = {
15 className: 'number',
16 begin: '[1-9][0-9]*', /* no leading zeros */
17 relevance: 0
18 };
19 const TPLABEL = {
20 className: 'symbol',
21 begin: ':[^\\]]+'
22 };
23 const TPDATA = {
24 className: 'built_in',
25 begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|'
26 + 'TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\[',
27 end: '\\]',
28 contains: [
29 'self',
30 TPID,
31 TPLABEL
32 ]
33 };
34 const TPIO = {
35 className: 'built_in',
36 begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\[',
37 end: '\\]',
38 contains: [
39 'self',
40 TPID,
41 hljs.QUOTE_STRING_MODE, /* for pos section at bottom */
42 TPLABEL
43 ]
44 };
45
46 const KEYWORDS = [
47 "ABORT",
48 "ACC",
49 "ADJUST",
50 "AND",
51 "AP_LD",
52 "BREAK",
53 "CALL",
54 "CNT",
55 "COL",
56 "CONDITION",
57 "CONFIG",
58 "DA",
59 "DB",
60 "DIV",
61 "DETECT",
62 "ELSE",
63 "END",
64 "ENDFOR",
65 "ERR_NUM",
66 "ERROR_PROG",
67 "FINE",
68 "FOR",
69 "GP",
70 "GUARD",
71 "INC",
72 "IF",
73 "JMP",
74 "LINEAR_MAX_SPEED",
75 "LOCK",
76 "MOD",
77 "MONITOR",
78 "OFFSET",
79 "Offset",
80 "OR",
81 "OVERRIDE",
82 "PAUSE",
83 "PREG",
84 "PTH",
85 "RT_LD",
86 "RUN",
87 "SELECT",
88 "SKIP",
89 "Skip",
90 "TA",
91 "TB",
92 "TO",
93 "TOOL_OFFSET",
94 "Tool_Offset",
95 "UF",
96 "UT",
97 "UFRAME_NUM",
98 "UTOOL_NUM",
99 "UNLOCK",
100 "WAIT",
101 "X",
102 "Y",
103 "Z",
104 "W",
105 "P",
106 "R",
107 "STRLEN",
108 "SUBSTR",
109 "FINDSTR",
110 "VOFFSET",
111 "PROG",
112 "ATTR",
113 "MN",
114 "POS"
115 ];
116 const LITERALS = [
117 "ON",
118 "OFF",
119 "max_speed",
120 "LPOS",
121 "JPOS",
122 "ENABLE",
123 "DISABLE",
124 "START",
125 "STOP",
126 "RESET"
127 ];
128
129 return {
130 name: 'TP',
131 keywords: {
132 keyword: KEYWORDS,
133 literal: LITERALS
134 },
135 contains: [
136 TPDATA,
137 TPIO,
138 {
139 className: 'keyword',
140 begin: '/(PROG|ATTR|MN|POS|END)\\b'
141 },
142 {
143 /* this is for cases like ,CALL */
144 className: 'keyword',
145 begin: '(CALL|RUN|POINT_LOGIC|LBL)\\b'
146 },
147 {
148 /* this is for cases like CNT100 where the default lexemes do not
149 * separate the keyword and the number */
150 className: 'keyword',
151 begin: '\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'
152 },
153 {
154 /* to catch numbers that do not have a word boundary on the left */
155 className: 'number',
156 begin: '\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\b',
157 relevance: 0
158 },
159 hljs.COMMENT('//', '[;$]'),
160 hljs.COMMENT('!', '[;$]'),
161 hljs.COMMENT('--eg:', '$'),
162 hljs.QUOTE_STRING_MODE,
163 {
164 className: 'string',
165 begin: '\'',
166 end: '\''
167 },
168 hljs.C_NUMBER_MODE,
169 {
170 className: 'variable',
171 begin: '\\$[A-Za-z0-9_]+'
172 }
173 ]
174 };
175 }
176
177 return tp;
178
179 })();
180
181 hljs.registerLanguage('tp', hljsGrammar);
182 })();