1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: JAL 3071d4279SBram Moolenaar" Version: 0.1 4071d4279SBram Moolenaar" Last Change: 2003 May 11 5071d4279SBram Moolenaar" Maintainer: Mark Gross <[email protected]> 6071d4279SBram Moolenaar" This is a syntax definition for the JAL language. 7071d4279SBram Moolenaar" It is based on the Source Forge compiler source code. 8071d4279SBram Moolenaar" https://sourceforge.net/projects/jal/ 9071d4279SBram Moolenaar" 10071d4279SBram Moolenaar" TODO test. 11071d4279SBram Moolenaar 1289bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1389bcfda6SBram Moolenaarif exists("b:current_syntax") 14071d4279SBram Moolenaar finish 15071d4279SBram Moolenaarendif 16071d4279SBram Moolenaar 17071d4279SBram Moolenaarsyn case ignore 18071d4279SBram Moolenaarsyn sync lines=250 19071d4279SBram Moolenaar 20071d4279SBram Moolenaarsyn keyword picTodo NOTE TODO XXX contained 21071d4279SBram Moolenaar 22071d4279SBram Moolenaarsyn match picIdentifier "[a-z_$][a-z0-9_$]*" 23071d4279SBram Moolenaarsyn match picLabel "^[A-Z_$][A-Z0-9_$]*" 24071d4279SBram Moolenaarsyn match picLabel "^[A-Z_$][A-Z0-9_$]*:"me=e-1 25071d4279SBram Moolenaar 26071d4279SBram Moolenaarsyn match picASCII "A\='.'" 27071d4279SBram Moolenaarsyn match picBinary "B'[0-1]\+'" 28071d4279SBram Moolenaarsyn match picDecimal "D'\d\+'" 29071d4279SBram Moolenaarsyn match picDecimal "\d\+" 30071d4279SBram Moolenaarsyn match picHexadecimal "0x\x\+" 31071d4279SBram Moolenaarsyn match picHexadecimal "H'\x\+'" 32071d4279SBram Moolenaarsyn match picHexadecimal "[0-9]\x*h" 33071d4279SBram Moolenaarsyn match picOctal "O'[0-7]\o*'" 34071d4279SBram Moolenaar 35071d4279SBram Moolenaarsyn match picComment ";.*" contains=picTodo 36071d4279SBram Moolenaar 37071d4279SBram Moolenaarsyn region picString start=+"+ end=+"+ 38071d4279SBram Moolenaar 39071d4279SBram Moolenaarsyn keyword picRegister indf tmr0 pcl status fsr port_a port_b port_c port_d port_e x84_eedata x84_eeadr pclath intcon 40071d4279SBram Moolenaarsyn keyword picRegister f877_tmr1l f877_tmr1h f877_t1con f877_t2con f877_ccpr1l f877_ccpr1h f877_ccp1con 41071d4279SBram Moolenaarsyn keyword picRegister f877_pir1 f877_pir2 f877_pie1 f877_adcon1 f877_adcon0 f877_pr2 f877_adresl f877_adresh 42071d4279SBram Moolenaarsyn keyword picRegister f877_eeadr f877_eedath f877_eeadrh f877_eedata f877_eecon1 f877_eecon2 f628_EECON2 43071d4279SBram Moolenaarsyn keyword picRegister f877_rcsta f877_txsta f877_spbrg f877_txreg f877_rcreg f628_EEDATA f628_EEADR f628_EECON1 44071d4279SBram Moolenaar 45071d4279SBram Moolenaar" Register --- bits 46071d4279SBram Moolenaar" STATUS 47071d4279SBram Moolenaarsyn keyword picRegisterPart status_c status_dc status_z status_pd 48071d4279SBram Moolenaarsyn keyword picRegisterPart status_to status_rp0 status_rp1 status_irp 49071d4279SBram Moolenaar 50071d4279SBram Moolenaar" pins 51071d4279SBram Moolenaarsyn keyword picRegisterPart pin_a0 pin_a1 pin_a2 pin_a3 pin_a4 pin_a5 52071d4279SBram Moolenaarsyn keyword picRegisterPart pin_b0 pin_b1 pin_b2 pin_b3 pin_b4 pin_b5 pin_b6 pin_b7 53071d4279SBram Moolenaarsyn keyword picRegisterPart pin_c0 pin_c1 pin_c2 pin_c3 pin_c4 pin_c5 pin_c6 pin_c7 54071d4279SBram Moolenaarsyn keyword picRegisterPart pin_d0 pin_d1 pin_d2 pin_d3 pin_d4 pin_d5 pin_d6 pin_d7 55071d4279SBram Moolenaarsyn keyword picRegisterPart pin_e0 pin_e1 pin_e2 56071d4279SBram Moolenaar 57071d4279SBram Moolenaarsyn keyword picPortDir port_a_direction port_b_direction port_c_direction port_d_direction port_e_direction 58071d4279SBram Moolenaar 59071d4279SBram Moolenaarsyn match picPinDir "pin_a[012345]_direction" 60071d4279SBram Moolenaarsyn match picPinDir "pin_b[01234567]_direction" 61071d4279SBram Moolenaarsyn match picPinDir "pin_c[01234567]_direction" 62071d4279SBram Moolenaarsyn match picPinDir "pin_d[01234567]_direction" 63071d4279SBram Moolenaarsyn match picPinDir "pin_e[012]_direction" 64071d4279SBram Moolenaar 65071d4279SBram Moolenaar 66071d4279SBram Moolenaar" INTCON 67071d4279SBram Moolenaarsyn keyword picRegisterPart intcon_gie intcon_eeie intcon_peie intcon_t0ie intcon_inte 68071d4279SBram Moolenaarsyn keyword picRegisterPart intcon_rbie intcon_t0if intcon_intf intcon_rbif 69071d4279SBram Moolenaar 70071d4279SBram Moolenaar" TIMER 71071d4279SBram Moolenaarsyn keyword picRegisterPart t1ckps1 t1ckps0 t1oscen t1sync tmr1cs tmr1on tmr1ie tmr1if 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar"cpp bits 74071d4279SBram Moolenaarsyn keyword picRegisterPart ccp1x ccp1y 75071d4279SBram Moolenaar 76071d4279SBram Moolenaar" adcon bits 77071d4279SBram Moolenaarsyn keyword picRegisterPart adcon0_go adcon0_ch0 adcon0_ch1 adcon0_ch2 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar" EECON 80071d4279SBram Moolenaarsyn keyword picRegisterPart eecon1_rd eecon1_wr eecon1_wren eecon1_wrerr eecon1_eepgd 81071d4279SBram Moolenaarsyn keyword picRegisterPart f628_eecon1_rd f628_eecon1_wr f628_eecon1_wren f628_eecon1_wrerr 82071d4279SBram Moolenaar 83071d4279SBram Moolenaar" usart 84071d4279SBram Moolenaarsyn keyword picRegisterPart tx9 txen sync brgh tx9d 85071d4279SBram Moolenaarsyn keyword picRegisterPart spen rx9 cren ferr oerr rx9d 86071d4279SBram Moolenaarsyn keyword picRegisterPart TXIF RCIF 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar" OpCodes... 89071d4279SBram Moolenaarsyn keyword picOpcode addlw andlw call clrwdt goto iorlw movlw option retfie retlw return sleep sublw tris 90071d4279SBram Moolenaarsyn keyword picOpcode xorlw addwf andwf clrf clrw comf decf decfsz incf incfsz retiw iorwf movf movwf nop 91071d4279SBram Moolenaarsyn keyword picOpcode rlf rrf subwf swapf xorwf bcf bsf btfsc btfss skpz skpnz setz clrz skpc skpnc setc clrc 92071d4279SBram Moolenaarsyn keyword picOpcode skpdc skpndc setdc clrdc movfw tstf bank page HPAGE mullw mulwf cpfseq cpfsgt cpfslt banka bankb 93071d4279SBram Moolenaar 94071d4279SBram Moolenaar 95071d4279SBram Moolenaarsyn keyword jalBoolean true false 96071d4279SBram Moolenaarsyn keyword jalBoolean off on 97071d4279SBram Moolenaarsyn keyword jalBit high low 98071d4279SBram Moolenaarsyn keyword jalConstant Input Output all_input all_output 99071d4279SBram Moolenaarsyn keyword jalConditional if else then elsif end if 100071d4279SBram Moolenaarsyn keyword jalLabel goto 101071d4279SBram Moolenaarsyn keyword jalRepeat for while forever loop 102071d4279SBram Moolenaarsyn keyword jalStatement procedure function 103071d4279SBram Moolenaarsyn keyword jalStatement return end volatile const var 104071d4279SBram Moolenaarsyn keyword jalType bit byte 105071d4279SBram Moolenaar 106071d4279SBram Moolenaarsyn keyword jalModifier interrupt assembler asm put get 107071d4279SBram Moolenaarsyn keyword jalStatement out in is begin at 108071d4279SBram Moolenaarsyn keyword jalDirective pragma jump_table target target_clock target_chip name error test assert 109071d4279SBram Moolenaarsyn keyword jalPredefined hs xt rc lp internal 16c84 16f84 16f877 sx18 sx28 12c509a 12c508 110071d4279SBram Moolenaarsyn keyword jalPredefined 12ce674 16f628 18f252 18f242 18f442 18f452 12f629 12f675 16f88 111071d4279SBram Moolenaarsyn keyword jalPredefined 16f876 16f873 sx_12 sx18 sx28 pic_12 pic_14 pic_16 112071d4279SBram Moolenaar 113071d4279SBram Moolenaarsyn keyword jalDirective chip osc clock fuses cpu watchdog powerup protection 114071d4279SBram Moolenaar 115071d4279SBram Moolenaarsyn keyword jalFunction bank_0 bank_1 bank_2 bank_3 bank_4 bank_5 bank_6 bank_7 trisa trisb trisc trisd trise 116071d4279SBram Moolenaarsyn keyword jalFunction _trisa_flush _trisb_flush _trisc_flush _trisd_flush _trise_flush 117071d4279SBram Moolenaar 118071d4279SBram Moolenaarsyn keyword jalPIC local idle_loop 119071d4279SBram Moolenaar 120071d4279SBram Moolenaarsyn 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 121071d4279SBram Moolenaarsyn region jalAsm matchgroup=jalAsmKey start="\<asm\>" end=/$/ contains=jalComment,jalPreProc,jalLabel,picIdentifier, picLabel,picASCII,picDecimal,picHexadecimal,picOctal,picComment,picString,picRegister,picRigisterPart,picOpcode,picDirective,jalPIC 122071d4279SBram Moolenaar 123071d4279SBram Moolenaarsyn region jalPsudoVars matchgroup=jalPsudoVarsKey start="\<'put\>" end="/<is/>" contains=jalComment 124071d4279SBram Moolenaar 125071d4279SBram Moolenaarsyn match jalStringEscape contained "#[12][0-9]\=[0-9]\=" 126071d4279SBram Moolenaarsyn match jalIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" 127071d4279SBram Moolenaarsyn match jalSymbolOperator "[+\-/*=]" 128071d4279SBram Moolenaarsyn match jalSymbolOperator "!" 129071d4279SBram Moolenaarsyn match jalSymbolOperator "<" 130071d4279SBram Moolenaarsyn match jalSymbolOperator ">" 131071d4279SBram Moolenaarsyn match jalSymbolOperator "<=" 132071d4279SBram Moolenaarsyn match jalSymbolOperator ">=" 133071d4279SBram Moolenaarsyn match jalSymbolOperator "!=" 134071d4279SBram Moolenaarsyn match jalSymbolOperator "==" 135071d4279SBram Moolenaarsyn match jalSymbolOperator "<<" 136071d4279SBram Moolenaarsyn match jalSymbolOperator ">>" 137071d4279SBram Moolenaarsyn match jalSymbolOperator "|" 138071d4279SBram Moolenaarsyn match jalSymbolOperator "&" 139071d4279SBram Moolenaarsyn match jalSymbolOperator "%" 140071d4279SBram Moolenaarsyn match jalSymbolOperator "?" 141071d4279SBram Moolenaarsyn match jalSymbolOperator "[()]" 142071d4279SBram Moolenaarsyn match jalSymbolOperator "[\^.]" 143071d4279SBram Moolenaarsyn match jalLabel "[\^]*:" 144071d4279SBram Moolenaar 145071d4279SBram Moolenaarsyn match jalNumber "-\=\<\d[0-9_]\+\>" 146071d4279SBram Moolenaarsyn match jalHexNumber "0x[0-9A-Fa-f_]\+\>" 147071d4279SBram Moolenaarsyn match jalBinNumber "0b[01_]\+\>" 148071d4279SBram Moolenaar 149071d4279SBram Moolenaar" String 150071d4279SBram Moolenaar"wrong strings 151071d4279SBram Moolenaarsyn region jalStringError matchgroup=jalStringError start=+"+ end=+"+ end=+$+ contains=jalStringEscape 152071d4279SBram Moolenaar 153071d4279SBram Moolenaar"right strings 154071d4279SBram Moolenaarsyn region jalString matchgroup=jalString start=+'+ end=+'+ oneline contains=jalStringEscape 155071d4279SBram Moolenaar" To see the start and end of strings: 156071d4279SBram Moolenaarsyn region jalString matchgroup=jalString start=+"+ end=+"+ oneline contains=jalStringEscapeGPC 157071d4279SBram Moolenaar 158071d4279SBram Moolenaarsyn keyword jalTodo contained TODO 159071d4279SBram Moolenaarsyn region jalComment start=/-- / end=/$/ oneline contains=jalTodo 160071d4279SBram Moolenaarsyn region jalComment start=/--\t/ end=/$/ oneline contains=jalTodo 161071d4279SBram Moolenaarsyn match jalComment /--\_$/ 162071d4279SBram Moolenaarsyn region jalPreProc start="include" end=/$/ contains=JalComment,jalToDo 163071d4279SBram Moolenaar 164071d4279SBram Moolenaar 165071d4279SBram Moolenaarif exists("jal_no_tabs") 166071d4279SBram Moolenaar syn match jalShowTab "\t" 167071d4279SBram Moolenaarendif 168071d4279SBram Moolenaar 169071d4279SBram Moolenaar 170071d4279SBram Moolenaar" Define the default highlighting. 17189bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 172071d4279SBram Moolenaar 173*f37506f6SBram Moolenaarhi def link jalAcces jalStatement 174*f37506f6SBram Moolenaarhi def link jalBoolean Boolean 175*f37506f6SBram Moolenaarhi def link jalBit Boolean 176*f37506f6SBram Moolenaarhi def link jalComment Comment 177*f37506f6SBram Moolenaarhi def link jalConditional Conditional 178*f37506f6SBram Moolenaarhi def link jalConstant Constant 179*f37506f6SBram Moolenaarhi def link jalDelimiter Identifier 180*f37506f6SBram Moolenaarhi def link jalDirective PreProc 181*f37506f6SBram Moolenaarhi def link jalException Exception 182*f37506f6SBram Moolenaarhi def link jalFloat Float 183*f37506f6SBram Moolenaarhi def link jalFunction Function 184*f37506f6SBram Moolenaarhi def link jalPsudoVarsKey Function 185*f37506f6SBram Moolenaarhi def link jalLabel Label 186*f37506f6SBram Moolenaarhi def link jalMatrixDelimiter Identifier 187*f37506f6SBram Moolenaarhi def link jalModifier Type 188*f37506f6SBram Moolenaarhi def link jalNumber Number 189*f37506f6SBram Moolenaarhi def link jalBinNumber Number 190*f37506f6SBram Moolenaarhi def link jalHexNumber Number 191*f37506f6SBram Moolenaarhi def link jalOperator Operator 192*f37506f6SBram Moolenaarhi def link jalPredefined Constant 193*f37506f6SBram Moolenaarhi def link jalPreProc PreProc 194*f37506f6SBram Moolenaarhi def link jalRepeat Repeat 195*f37506f6SBram Moolenaarhi def link jalStatement Statement 196*f37506f6SBram Moolenaarhi def link jalString String 197*f37506f6SBram Moolenaarhi def link jalStringEscape Special 198*f37506f6SBram Moolenaarhi def link jalStringEscapeGPC Special 199*f37506f6SBram Moolenaarhi def link jalStringError Error 200*f37506f6SBram Moolenaarhi def link jalStruct jalStatement 201*f37506f6SBram Moolenaarhi def link jalSymbolOperator jalOperator 202*f37506f6SBram Moolenaarhi def link jalTodo Todo 203*f37506f6SBram Moolenaarhi def link jalType Type 204*f37506f6SBram Moolenaarhi def link jalUnclassified Statement 205*f37506f6SBram Moolenaarhi def link jalAsm Assembler 206*f37506f6SBram Moolenaarhi def link jalError Error 207*f37506f6SBram Moolenaarhi def link jalAsmKey Statement 208*f37506f6SBram Moolenaarhi def link jalPIC Statement 209071d4279SBram Moolenaar 210*f37506f6SBram Moolenaarhi def link jalShowTab Error 211071d4279SBram Moolenaar 212*f37506f6SBram Moolenaarhi def link picTodo Todo 213*f37506f6SBram Moolenaarhi def link picComment Comment 214*f37506f6SBram Moolenaarhi def link picDirective Statement 215*f37506f6SBram Moolenaarhi def link picLabel Label 216*f37506f6SBram Moolenaarhi def link picString String 217071d4279SBram Moolenaar 218*f37506f6SBram Moolenaarhi def link picOpcode Keyword 219*f37506f6SBram Moolenaarhi def link picRegister Structure 220*f37506f6SBram Moolenaarhi def link picRegisterPart Special 221*f37506f6SBram Moolenaarhi def link picPinDir SPecial 222*f37506f6SBram Moolenaarhi def link picPortDir SPecial 223071d4279SBram Moolenaar 224*f37506f6SBram Moolenaarhi def link picASCII String 225*f37506f6SBram Moolenaarhi def link picBinary Number 226*f37506f6SBram Moolenaarhi def link picDecimal Number 227*f37506f6SBram Moolenaarhi def link picHexadecimal Number 228*f37506f6SBram Moolenaarhi def link picOctal Number 229071d4279SBram Moolenaar 230*f37506f6SBram Moolenaarhi def link picIdentifier Identifier 231071d4279SBram Moolenaar 232071d4279SBram Moolenaar 233071d4279SBram Moolenaar 234071d4279SBram Moolenaarlet b:current_syntax = "jal" 235071d4279SBram Moolenaar 236071d4279SBram Moolenaar" vim: ts=8 sw=2 237