diff options
Diffstat (limited to 'runtime/syntax/jal.vim')
-rw-r--r-- | runtime/syntax/jal.vim | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/runtime/syntax/jal.vim b/runtime/syntax/jal.vim new file mode 100644 index 000000000..d0ba67285 --- /dev/null +++ b/runtime/syntax/jal.vim @@ -0,0 +1,249 @@ +" Vim syntax file +" Language: JAL +" Version: 0.1 +" Last Change: 2003 May 11 +" Maintainer: Mark Gross <mark@thegnar.org> +" 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="\<assembler\>" end="\<end assembler\>" contains=jalComment,jalPreProc,jalLabel,picIdentifier, picLabel,picASCII,picDecimal,picHexadecimal,picOctal,picComment,picString,picRegister,picRigisterPart,picOpcode,picDirective,jalPIC +syn region jalAsm matchgroup=jalAsmKey start="\<asm\>" 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="/<is/>" 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 <args> +else + command -nargs=+ HiLink hi def link <args> +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 |