forked from aniani/vim
		
	
		
			
	
	
		
			250 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			250 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " 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 |