| " 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 |