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