" Vim syntax file " Language: JAL " Version: 0.1 " Last Change: 2003 May 11 " Maintainer: Mark Gross " This is a syntax definition for the JAL language. " It is based on the Source Forge compiler source code. " https://sourceforge.net/projects/jal/ " " TODO test. " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syn case ignore syn sync lines=250 syn keyword picTodo NOTE TODO XXX contained syn match picIdentifier "[a-z_$][a-z0-9_$]*" syn match picLabel "^[A-Z_$][A-Z0-9_$]*" syn match picLabel "^[A-Z_$][A-Z0-9_$]*:"me=e-1 syn match picASCII "A\='.'" syn match picBinary "B'[0-1]\+'" syn match picDecimal "D'\d\+'" syn match picDecimal "\d\+" syn match picHexadecimal "0x\x\+" syn match picHexadecimal "H'\x\+'" syn match picHexadecimal "[0-9]\x*h" syn match picOctal "O'[0-7]\o*'" syn match picComment ";.*" contains=picTodo syn region picString start=+"+ end=+"+ syn keyword picRegister indf tmr0 pcl status fsr port_a port_b port_c port_d port_e x84_eedata x84_eeadr pclath intcon syn keyword picRegister f877_tmr1l f877_tmr1h f877_t1con f877_t2con f877_ccpr1l f877_ccpr1h f877_ccp1con syn keyword picRegister f877_pir1 f877_pir2 f877_pie1 f877_adcon1 f877_adcon0 f877_pr2 f877_adresl f877_adresh syn keyword picRegister f877_eeadr f877_eedath f877_eeadrh f877_eedata f877_eecon1 f877_eecon2 f628_EECON2 syn keyword picRegister f877_rcsta f877_txsta f877_spbrg f877_txreg f877_rcreg f628_EEDATA f628_EEADR f628_EECON1 " Register --- bits " STATUS syn keyword picRegisterPart status_c status_dc status_z status_pd syn keyword picRegisterPart status_to status_rp0 status_rp1 status_irp " pins syn keyword picRegisterPart pin_a0 pin_a1 pin_a2 pin_a3 pin_a4 pin_a5 syn keyword picRegisterPart pin_b0 pin_b1 pin_b2 pin_b3 pin_b4 pin_b5 pin_b6 pin_b7 syn keyword picRegisterPart pin_c0 pin_c1 pin_c2 pin_c3 pin_c4 pin_c5 pin_c6 pin_c7 syn keyword picRegisterPart pin_d0 pin_d1 pin_d2 pin_d3 pin_d4 pin_d5 pin_d6 pin_d7 syn keyword picRegisterPart pin_e0 pin_e1 pin_e2 syn keyword picPortDir port_a_direction port_b_direction port_c_direction port_d_direction port_e_direction syn match picPinDir "pin_a[012345]_direction" syn match picPinDir "pin_b[01234567]_direction" syn match picPinDir "pin_c[01234567]_direction" syn match picPinDir "pin_d[01234567]_direction" syn match picPinDir "pin_e[012]_direction" " INTCON syn keyword picRegisterPart intcon_gie intcon_eeie intcon_peie intcon_t0ie intcon_inte syn keyword picRegisterPart intcon_rbie intcon_t0if intcon_intf intcon_rbif " TIMER syn keyword picRegisterPart t1ckps1 t1ckps0 t1oscen t1sync tmr1cs tmr1on tmr1ie tmr1if "cpp bits syn keyword picRegisterPart ccp1x ccp1y " adcon bits syn keyword picRegisterPart adcon0_go adcon0_ch0 adcon0_ch1 adcon0_ch2 " EECON syn keyword picRegisterPart eecon1_rd eecon1_wr eecon1_wren eecon1_wrerr eecon1_eepgd syn keyword picRegisterPart f628_eecon1_rd f628_eecon1_wr f628_eecon1_wren f628_eecon1_wrerr " usart syn keyword picRegisterPart tx9 txen sync brgh tx9d syn keyword picRegisterPart spen rx9 cren ferr oerr rx9d syn keyword picRegisterPart TXIF RCIF " OpCodes... syn keyword picOpcode addlw andlw call clrwdt goto iorlw movlw option retfie retlw return sleep sublw tris syn keyword picOpcode xorlw addwf andwf clrf clrw comf decf decfsz incf incfsz retiw iorwf movf movwf nop syn keyword picOpcode rlf rrf subwf swapf xorwf bcf bsf btfsc btfss skpz skpnz setz clrz skpc skpnc setc clrc syn keyword picOpcode skpdc skpndc setdc clrdc movfw tstf bank page HPAGE mullw mulwf cpfseq cpfsgt cpfslt banka bankb syn keyword jalBoolean true false syn keyword jalBoolean off on syn keyword jalBit high low syn keyword jalConstant Input Output all_input all_output syn keyword jalConditional if else then elsif end if syn keyword jalLabel goto syn keyword jalRepeat for while forever loop syn keyword jalStatement procedure function syn keyword jalStatement return end volatile const var syn keyword jalType bit byte syn keyword jalModifier interrupt assembler asm put get syn keyword jalStatement out in is begin at syn keyword jalDirective pragma jump_table target target_clock target_chip name error test assert syn keyword jalPredefined hs xt rc lp internal 16c84 16f84 16f877 sx18 sx28 12c509a 12c508 syn keyword jalPredefined 12ce674 16f628 18f252 18f242 18f442 18f452 12f629 12f675 16f88 syn keyword jalPredefined 16f876 16f873 sx_12 sx18 sx28 pic_12 pic_14 pic_16 syn keyword jalDirective chip osc clock fuses cpu watchdog powerup protection syn keyword jalFunction bank_0 bank_1 bank_2 bank_3 bank_4 bank_5 bank_6 bank_7 trisa trisb trisc trisd trise syn keyword jalFunction _trisa_flush _trisb_flush _trisc_flush _trisd_flush _trise_flush syn keyword jalPIC local idle_loop syn region jalAsm matchgroup=jalAsmKey start="\" end="\" contains=jalComment,jalPreProc,jalLabel,picIdentifier, picLabel,picASCII,picDecimal,picHexadecimal,picOctal,picComment,picString,picRegister,picRigisterPart,picOpcode,picDirective,jalPIC syn region jalAsm matchgroup=jalAsmKey start="\" end=/$/ contains=jalComment,jalPreProc,jalLabel,picIdentifier, picLabel,picASCII,picDecimal,picHexadecimal,picOctal,picComment,picString,picRegister,picRigisterPart,picOpcode,picDirective,jalPIC syn region jalPsudoVars matchgroup=jalPsudoVarsKey start="\<'put\>" end="/" contains=jalComment syn match jalStringEscape contained "#[12][0-9]\=[0-9]\=" syn match jalIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" syn match jalSymbolOperator "[+\-/*=]" syn match jalSymbolOperator "!" syn match jalSymbolOperator "<" syn match jalSymbolOperator ">" syn match jalSymbolOperator "<=" syn match jalSymbolOperator ">=" syn match jalSymbolOperator "!=" syn match jalSymbolOperator "==" syn match jalSymbolOperator "<<" syn match jalSymbolOperator ">>" syn match jalSymbolOperator "|" syn match jalSymbolOperator "&" syn match jalSymbolOperator "%" syn match jalSymbolOperator "?" syn match jalSymbolOperator "[()]" syn match jalSymbolOperator "[\^.]" syn match jalLabel "[\^]*:" syn match jalNumber "-\=\<\d[0-9_]\+\>" syn match jalHexNumber "0x[0-9A-Fa-f_]\+\>" syn match jalBinNumber "0b[01_]\+\>" " String "wrong strings syn region jalStringError matchgroup=jalStringError start=+"+ end=+"+ end=+$+ contains=jalStringEscape "right strings syn region jalString matchgroup=jalString start=+'+ end=+'+ oneline contains=jalStringEscape " To see the start and end of strings: syn region jalString matchgroup=jalString start=+"+ end=+"+ oneline contains=jalStringEscapeGPC syn keyword jalTodo contained TODO syn region jalComment start=/-- / end=/$/ oneline contains=jalTodo syn region jalComment start=/--\t/ end=/$/ oneline contains=jalTodo syn match jalComment /--\_$/ syn region jalPreProc start="include" end=/$/ contains=JalComment,jalToDo if exists("jal_no_tabs") syn match jalShowTab "\t" endif " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_jal_syn_inits") if version < 508 let did_jal_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink jalAcces jalStatement HiLink jalBoolean Boolean HiLink jalBit Boolean HiLink jalComment Comment HiLink jalConditional Conditional HiLink jalConstant Constant HiLink jalDelimiter Identifier HiLink jalDirective PreProc HiLink jalException Exception HiLink jalFloat Float HiLink jalFunction Function HiLink jalPsudoVarsKey Function HiLink jalLabel Label HiLink jalMatrixDelimiter Identifier HiLink jalModifier Type HiLink jalNumber Number HiLink jalBinNumber Number HiLink jalHexNumber Number HiLink jalOperator Operator HiLink jalPredefined Constant HiLink jalPreProc PreProc HiLink jalRepeat Repeat HiLink jalStatement Statement HiLink jalString String HiLink jalStringEscape Special HiLink jalStringEscapeGPC Special HiLink jalStringError Error HiLink jalStruct jalStatement HiLink jalSymbolOperator jalOperator HiLink jalTodo Todo HiLink jalType Type HiLink jalUnclassified Statement HiLink jalAsm Assembler HiLink jalError Error HiLink jalAsmKey Statement HiLink jalPIC Statement HiLink jalShowTab Error HiLink picTodo Todo HiLink picComment Comment HiLink picDirective Statement HiLink picLabel Label HiLink picString String HiLink picOpcode Keyword HiLink picRegister Structure HiLink picRegisterPart Special HiLink picPinDir SPecial HiLink picPortDir SPecial HiLink picASCII String HiLink picBinary Number HiLink picDecimal Number HiLink picHexadecimal Number HiLink picOctal Number HiLink picIdentifier Identifier delcommand HiLink endif let b:current_syntax = "jal" " vim: ts=8 sw=2