neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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"