karel.vim (6434B)
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"