mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Add some data structures to represent for loops. These will be referenced during object processing to do any needed iteration and instantiation. Add foreach keyword support to the lexer. Add a mode to indicate that we're parsing a foreach loop. This allows the value parser to early-out when processing the foreach value list. Add a routine to parse foreach iteration declarations. This is separate from ParseDeclaration because the type of the named value (the iterator) doesn't match the type of the initializer value (the value list). It also needs to add two values to the foreach record: the iterator and the value list. Add parsing support for foreach. Add the code to process foreach loops and create defs based on iterator values. Allow foreach loops to be matched at the top level. When parsing an IDValue check if it is a foreach loop iterator for one of the active loops. If so, return a VarInit for it. Add Emacs keyword support for foreach. Add VIM keyword support for foreach. Add tests to check foreach operation. Add TableGen documentation for foreach. Support foreach with multiple objects. Support non-braced foreach body with one object. Do not require types for the foreach declaration. Assume the iterator type from the iteration list element type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151164 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:   TableGen
 | |
| " Maintainer: The LLVM team, http://llvm.org/
 | |
| " Version:    $Revision$
 | |
| 
 | |
| if version < 600
 | |
|   syntax clear
 | |
| elseif exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " May be changed if you have a really slow machine
 | |
| syntax sync minlines=100
 | |
| 
 | |
| syn case match
 | |
| 
 | |
| syn keyword tgKeyword   def let in code dag field include defm foreach
 | |
| syn keyword tgType      class int string list bit bits multiclass
 | |
| 
 | |
| syn match   tgNumber    /\<\d\+\>/
 | |
| syn match   tgNumber    /\<\d\+\.\d*\>/
 | |
| syn match   tgNumber    /\<0b[01]\+\>/
 | |
| syn match   tgNumber    /\<0x[0-9a-fA-F]\+\>/
 | |
| syn region  tgString    start=/"/ skip=/\\"/ end=/"/    oneline
 | |
| 
 | |
| syn region  tgCode      start=/\[{/ end=/}\]/
 | |
| 
 | |
| syn keyword tgTodo             contained TODO FIXME
 | |
| syn match   tgComment   /\/\/.*$/         contains=tgTodo
 | |
| " Handle correctly imbricated comment
 | |
| syn region  tgComment2 matchgroup=tgComment2  start=+/\*+ end=+\*/+ contains=tgTodo,tgComment2
 | |
| 
 | |
| if version >= 508 || !exists("did_c_syn_inits")
 | |
|   if version < 508
 | |
|     let did_c_syn_inits = 1
 | |
|     command -nargs=+ HiLink hi link <args>
 | |
|   else
 | |
|     command -nargs=+ HiLink hi def link <args>
 | |
|   endif
 | |
| 
 | |
|   HiLink tgKeyword Statement
 | |
|   HiLink tgType Type
 | |
|   HiLink tgNumber Number
 | |
|   HiLink tgComment Comment
 | |
|   HiLink tgComment2 Comment
 | |
|   HiLink tgString String
 | |
|   " May find a better Hilight group...
 | |
|   HiLink tgCode Special
 | |
|   HiLink tgTodo Todo
 | |
| 
 | |
|   delcommand HiLink
 | |
| endif
 | |
| 
 | |
| let b:current_syntax = "tablegen"
 |