Kirill Morozov | fdac54d | 2024-11-19 20:36:22 +0100 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: KAREL |
| 3 | " Last Change: 2024-11-17 |
| 4 | " Maintainer: Kirill Morozov <kirill@robotix.pro> |
| 5 | " Credits: Jay Strybis for the initial implementation and Patrick Knosowski |
| 6 | " for a couple of fixes. |
| 7 | |
| 8 | if exists("b:current_syntax") |
| 9 | finish |
| 10 | endif |
| 11 | |
| 12 | " KAREL is case-insensitive |
| 13 | syntax case ignore |
| 14 | |
| 15 | " Identifiers |
| 16 | syn match karelIdentifier /[a-zA-Z0-9_]\+/ |
| 17 | hi def link karelIdentifier Identifier |
| 18 | |
| 19 | " Constants |
| 20 | syn keyword karelConstant CR |
| 21 | syn region karelString start="'" end="'" |
| 22 | syn match karelReal /\d\+\.\d\+/ |
| 23 | syn match karelInteger /\d\+/ |
| 24 | syn keyword karelBoolean true false |
| 25 | hi def link karelConstant Constant |
| 26 | hi def link karelString String |
| 27 | hi def link karelInteger Number |
| 28 | hi def link karelReal Float |
| 29 | hi def link karelBoolean Boolean |
| 30 | |
| 31 | " Directives |
| 32 | syn match karelDirective /%[a-zA-Z]\+/ |
| 33 | hi def link karelDirective PreProc |
| 34 | |
| 35 | " Operators |
| 36 | syn keyword karelOperator AND OR NOT DIV MOD |
| 37 | syn match karelOperator /[\+\-\*\/\<\=\>\:\#\@]/ |
| 38 | syn match karelOperator /<=/ |
| 39 | syn match karelOperator />=/ |
| 40 | syn match karelOperator /<>/ |
| 41 | syn match karelOperator />=</ |
| 42 | hi def link karelOperator Operator |
| 43 | |
| 44 | " Types |
| 45 | syn keyword karelType ARRAY BOOLEAN BYTE CONFIG DISP_DAT_T FILE INTEGER JOINTPOS PATH POSITION QUEUE_TYPE REAL SHORT STD_PTH_NODE STRING VECTOR XYZWPR XYZWPREXT |
| 46 | syn keyword karelStructure STRUCTURE ENDSTRUCTURE |
| 47 | hi def link karelType Type |
| 48 | hi def link karelStructure Typedef |
| 49 | |
| 50 | syn keyword karelAction NOABORT NOMESSAGE NOPAUSE PAUSE PULSE RESUME STOP UNHOLD UNPAUSE |
| 51 | syn match karelAction /SIGNAL EVENT/ |
| 52 | syn match karelAction /SIGNAL SEMAPHORE/ |
| 53 | hi def link karelAction Keyword |
| 54 | |
| 55 | syn keyword karelFunction ABS ACOS APPROACH ARRAY_LEN ASIN ATAN2 ATTACH BYNAME BYTES_LEFT CHR COS CURJPOS CURPOS CURR_PROG EXP |
| 56 | syn keyword karelFunction FRAME GET_FILE_POS GET_JPOS_REG GET_JPOS_TPE GET_PORT_ATR GET_POS_REG GET_POS_TPE GET_USEC_TIM INDEX |
| 57 | syn keyword karelFunction IN_RANGE INV IO_STATUS J_IN_RANGE JOINT2POS LN MIRROR MOTION_CTL NODE_SIZE ORD ORIENT PATH_LEN POS POS2JOINT |
| 58 | syn keyword karelFunction ROUND SEMA_COUNT SIN SQRT STR_LEN SUB_STR TAN TRUNC UNINIT |
| 59 | hi def link karelFunction Function |
| 60 | |
| 61 | syn keyword karelClause EVAL FROM IN WHEN WITH |
| 62 | hi def link karelClause Keyword |
| 63 | |
| 64 | syn keyword karelConditional IF THEN ELSE ENDIF SELECT ENDSELECT CASE |
| 65 | hi def link karelConditional Conditional |
| 66 | |
| 67 | syn keyword karelRepeat WHILE DO ENDWHILE FOR |
| 68 | hi def link karelRepeat Repeat |
| 69 | |
| 70 | syn keyword karelProcedure ABORT_TASK ACT_SCREEN ACT_TBL ADD_BYNAMEPC ADD_DICT ADD_INTPC ADD_REALPC ADD_STRINGPC APPEND_NODE APPEND_QUEUE |
| 71 | syn keyword karelProcedure ATT_WINDOW_D ATT_WINDOW_S AVL_POS_NUM |
| 72 | syn keyword karelProcedure BYTES_AHEAD |
| 73 | syn keyword karelProcedure CALL_PROG CALL_PROGLIN CHECK_DICT CHECK_EPOS CHECK_NAME CLEAR CLEAR_SEMA CLOSE_TEP CLR_IO_STAT CLR_PORT_SIM CLR_POS_REG |
| 74 | syn keyword karelProcedure CNC_DYN_DISB CNC_DYN_DISE CNC_DYN_DISI CNC_DYN_DISP CNC_DYN_DISR CNC_DYN_DISS CNCL_STP_MTN CNV_CNF_STRG CNV_CONF_STR CNV_INT_STR CNV_JPOS_REL CNV_REAL_STR CNV_REL_JPOS CNV_STR_CONF CNV_STR_INT CNV_STR_REAL CNV_STR_TIME CNV_TIME_STR |
| 75 | syn keyword karelProcedure COMPARE_FILE CONT_TASK COPY_FILE COPY_PATH COPY_QUEUE COPY_TPE CREATE_TPE CREATE_VAR |
| 76 | syn keyword karelProcedure DAQ_CHECKP DAQ_REGPIPE DAQ_START DAQ_STOP DAQ_UNREG DAQ_WRITE DEF_SCREEN DEF_WINDOW |
| 77 | syn keyword karelProcedure DELETE_FILE DELETE_NODE DELETE_QUEUE DEL_INST_TPE DET_WINDOW DISCTRL_ALPH DISCTRL_FORM DISCTRL_LIST DISCTRL_PLMN DISCTRL_SBMN DISCTRL_TBL DISMOUNT_DEV DOSFILE_INF |
| 78 | syn keyword karelProcedure ERR_DATA FILE_LIST FORCE_SPMENU FORMAT_DEV GET_ATTR_PRG GET_PORT_ASG GET_PORT_CMT GET_PORT_MOD GET_PORT_SIM GET_PORT_VAL GET_POS_FRM GET_POS_TYP GET_PREG_CMT GET_QUEUE |
| 79 | syn keyword karelProcedure GET_REG GET_REG_CMT GET_SREG_CMT GET_STR_REG GET_TIME GET_TPE_CMT GET_TPE_PRM GET_TSK_INFO GET_USEC_SUB GET_VAR |
| 80 | syn keyword karelProcedure INI_DYN_DISB INI_DYN_DISE INI_DYN_DISI INI_DYN_DISP INI_DYN_DISR INI_DYN_DISS INIT_QUEUE INIT_TBL INSERT_NODE INSERT_QUEUE IO_MOD_TYPE |
| 81 | syn keyword karelProcedure KCL KCL_NO_WAIT KCL_STATUS LOAD LOAD_STATUS LOCK_GROUP MODIFY_QUEUE MOUNT_DEV MOVE_FILE MSG_CONNECT MSG_DISO MSG_PING |
| 82 | syn keyword karelProcedure OPEN_TPE PAUSE_TASK PEND_SEMA PIPE_CONFIG POP_KEY_RD POS_REG_TYPE POST_ERR POST_ERR_L POST_SEMA PRINT_FILE PROG_BACKUP PROG_CLEAR PROG_RESTORE PROG_LIST |
| 83 | syn keyword karelProcedure PURGE_DEV PUSH_KEY_RD READ_DICT READ_DICT_V READ_KB REMOVE_DICT RENAME_FILE RENAME_VAR RENAME_VARS RESET RUN_TASK SAVE SAVE_DRAM SELECT_TPE SEND_DATAPC SEND_EVENTPC SET_ATTR_PRG SET_CURSOR SET_EPOS_REG SET_EPOS_TPE |
| 84 | syn keyword karelProcedure SET_FILE_ATR SET_FILE_POS SET_INT_REG SET_JPOS_REG SET_JPOS_TPE SET_LANG SET_PERCH SET_PORT_ASG SET_PORT_ATR SET_PORT_CMT SET_PORT_MOD SET_PORT_SIM SET_PORT_VAL SET_POS_REG SET_POS_TPE SET_PREG_CMT SET_REAL_REG SET_REG CMT SET_SREG_CMT SET_STR_REG SET_TIME SET_TPE_CMT SET_TRNS_TPE SET_TSK_ATTR SET_TSK_NAME SET_VAR |
| 85 | syn keyword karelProcedure TRANSLATE UNLOCK_GROUP UNPOS V_CAM_CALIB V_GET_OFFSET V_GET_PASSFL V_GET_QUEUE V_INIT_QUEUE V_RALC_QUEUE V_RUN_FIND V_SET_REF V_START_VTRK V_STOP_VTRK VAR_INFO VAR_LIST VOL_SPACE VREG_FND_POS VREG_OFFSET |
| 86 | syn keyword karelProcedure WRITE_DICT WRITE_DICT_V XML_ADDTAG XML_GETDATA XML_REMTAG XML_SCAN XML_SETVAR |
| 87 | hi def link karelProcedure Function |
| 88 | |
| 89 | syn keyword karelStatement ABORT CONDITION ENDCONDITION CONTINUE DELAY ERROR EVENT FOR ENDFOR HOLD READ RELEASE REPEAT RETURN SEMAPHORE UNTIL USING ENDUSING WRITE |
| 90 | syn match karelStatement /CANCEL FILE/ |
| 91 | syn match karelStatement /CLOSE FILE/ |
| 92 | syn match karelStatement /CLOSE HAND/ |
| 93 | syn match karelStatement /CONNECT TIMER/ |
| 94 | syn match karelStatement /DISABLE CONDITION/ |
| 95 | syn match karelStatement /DISCONNECT TIMER/ |
| 96 | syn match karelStatement /ENABLE CONDITION/ |
| 97 | syn match karelStatement /GO TO/ |
| 98 | syn match karelStatement /OPEN FILE/ |
| 99 | syn match karelStatement /OPEN HAND/ |
| 100 | syn match karelStatement /PURGE CONDITION/ |
| 101 | syn match karelStatement /RELAX HAND/ |
| 102 | syn match karelStatement /WAIT FOR/ |
| 103 | hi def link karelStatement Statement |
| 104 | |
| 105 | syn keyword karelKeyword BEGIN CONST END PROGRAM ROUTINE STRUCT TYPE VAR |
| 106 | hi def link karelKeyword Keyword |
| 107 | |
| 108 | " Comments |
| 109 | syn region karelComment start="--" end="$" |
| 110 | hi def link karelComment Comment |
| 111 | |
| 112 | let b:current_syntax = "karel" |