Index: /vim_script_cdl/trunk/syntax/cdl.vim
===================================================================
--- /vim_script_cdl/trunk/syntax/cdl.vim	(revision 10)
+++ /vim_script_cdl/trunk/syntax/cdl.vim	(revision 10)
@@ -0,0 +1,163 @@
+" 
+"  TOPPERS Software
+"      Toyohashi Open Platform for Embedded Real-Time Systems
+" 
+"  Copyright (C) 2011 by TAKUYA
+"              Embedded and Real-Time Systems Laboratory
+"              Graduate School of Information Science, Nagoya Univ., JAPAN
+" 
+"  ä¸è¨èä½æ¨©è
+ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
+"  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹å¤ã»
+"  åé
+å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
+"  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½æ¨©
+"      è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ã¹
+"      ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
+"  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ç¨
+"      ã§ããå½¢ã§åé
+å¸ããå ´åã«ã¯ï¼åé
+å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
+ã
+"      ãã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿
+"      è¨¼è¦å®ãæ²è¼ãããã¨ï¼
+"  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ç¨
+"      ã§ããªãå½¢ã§åé
+å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºãããã¨ï¼
+"    (a) åé
+å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
+ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½
+"        æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
+"    (b) åé
+å¸ã®å½¢æ
+ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«å ±
+"        åãããã¨ï¼
+"  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³
+"      ãããï¼ä¸è¨èä½æ¨©è
+ããã³TOPPERSãã­ã¸ã§ã¯ããå
+è²¬ãããã¨ï¼ã¾ãï¼
+"      æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãçç±ã«åºã¥
+"      ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
+ããã³TOPPERSãã­ã¸ã§ã¯ããå
+è²¬ãããã¨ï¼
+" 
+"  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
+ãã
+"  ã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®çã«å¯¾ã
+"  ãé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨
+"  ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² 
+"  ããªãï¼
+"
+"
+" Vim syntax file
+" Language:	cdl (Component Description Language for TECS)
+" Maintainer:	TAKUYA
+" Last Change:	2011 Jun 29
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+
+" synã§ã­ã¼ã¯ã¼ãï¼ãã¿ã¼ã³ï¼ç¯å²ã®å
+é ­ã¨çµãããç»é²ãã
+" msã¯ãã¿ã¼ã³ãããã®å§ã¾ãï¼meã¯ãã¿ã¼ã³ãããã®çµãã
+" hsã¯ãã¤ã©ã¤ãã®å§ã¾ãï¼heã¯ãã¤ã©ã¤ãã®çµãã
+
+" æ¬å¼§
+syn match   cdlParen "[()]"
+
+" ã³ã¡ã³ã
+syn region  cdlComment start="/\*" end="\*/"
+syn region  cdlComment start="//" end="$"
+
+" æå­å
+syn region  cdlString start=+"+ skip=+\\"+ end=+"+
+syn region  cdlString start=+'+ skip=+\\'+ end=+'+
+
+" åï¼æ±ç¨ï¼
+syn keyword cdlType bool_t
+syn keyword cdlType char_t
+syn keyword cdlType double64_t
+syn keyword cdlType float32_t
+syn keyword cdlType enum
+syn keyword cdlType enum16
+syn keyword cdlType enum32
+syn keyword cdlType enum64
+syn keyword cdlType enum8
+syn keyword cdlType int128_t
+syn keyword cdlType int16_t
+syn keyword cdlType int32_t
+syn keyword cdlType int64_t
+syn keyword cdlType int8_t
+syn keyword cdlType struct
+syn keyword cdlType signed
+syn keyword cdlType unsigned
+syn keyword cdlType void
+syn keyword cdlType bool
+syn keyword cdlType char
+syn keyword cdlType double
+syn keyword cdlType float
+syn keyword cdlType int
+syn keyword cdlType int128
+syn keyword cdlType int16
+syn keyword cdlType int32
+syn keyword cdlType int64
+syn keyword cdlType int8
+syn keyword cdlType intptr
+syn keyword cdlType long
+syn keyword cdlType short
+
+" åï¼TECSå°ç¨ï¼
+syn keyword cdlType attr
+syn keyword cdlType call
+syn keyword cdlType cell
+syn keyword cdlType celltype
+syn keyword cdlType composite
+syn keyword cdlType entry
+syn keyword cdlType require
+syn keyword cdlType signature
+syn keyword cdlType var
+
+" factory
+syn keyword cdlFactory factory contained
+syn keyword cdlFactory FACTORY contained
+syn match   cdlFactoryFunction "write("me=e-1 contained
+syn region  cdlFactoryRegion start="\(factory\|FACTORY\)[ \t]*{" end="}" contains=cdlFactory,cdlFactoryFunction,cdlComment,cdlString,cdlParen
+
+syn keyword cdlType C_EXP
+syn keyword cdlType generate
+syn keyword cdlType namespace
+syn keyword cdlType region
+
+" æå®å­
+syn keyword cdlSpecifier active allocator context count_is idx_is_id in in_through inline inout omit optional out out_through receive send singleton size_is string through to_through contained
+syn region  cdlSpecifierRegion start="\[" end="\]" contains=cdlSpecifier,cdlParen,cdlString
+
+" å®æ°
+syn keyword cdlConstant false
+syn keyword cdlConstant true
+
+" ãã¯ã­ï¼typedefãªã© 
+syn keyword cdlMacro const
+syn keyword cdlMacro typedef
+syn keyword cdlMacro volatile
+
+" ããªãã­ã»ããµ
+syn keyword cdlInclude import
+syn keyword cdlInclude import_C
+
+hi def link cdlComment Comment
+hi def link cdlConstant Constant
+hi def link cdlInclude Include
+hi def link cdlMacro Macro 
+hi def link cdlString String
+hi def link cdlLabel Label 
+hi def link cdlType Type
+hi def link cdlSpecifier Label 
+hi def link cdlFactory Type 
+hi def link cdlFactoryFunction Label 
+hi def link cdlParen SpecialChar
+
+let b:current_syntax = "cdl"
+
Index: /vim_script_tf/trunk/indent/tf.vim
===================================================================
--- /vim_script_tf/trunk/indent/tf.vim	(revision 10)
+++ /vim_script_tf/trunk/indent/tf.vim	(revision 10)
@@ -0,0 +1,137 @@
+" 
+"  TOPPERS Software
+"      Toyohashi Open Platform for Embedded Real-Time Systems
+" 
+"  Copyright (C) 2011 by TAKUYA
+"              Embedded and Real-Time Systems Laboratory
+"              Graduate School of Information Science, Nagoya Univ., JAPAN
+" 
+"  ä¸è¨èä½æ¨©è
+ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
+"  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹å¤ã»
+"  åé
+å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
+"  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½æ¨©
+"      è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ã¹
+"      ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
+"  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ç¨
+"      ã§ããå½¢ã§åé
+å¸ããå ´åã«ã¯ï¼åé
+å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
+ã
+"      ãã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿
+"      è¨¼è¦å®ãæ²è¼ãããã¨ï¼
+"  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ç¨
+"      ã§ããªãå½¢ã§åé
+å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºãããã¨ï¼
+"    (a) åé
+å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
+ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½
+"        æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
+"    (b) åé
+å¸ã®å½¢æ
+ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«å ±
+"        åãããã¨ï¼
+"  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³
+"      ãããï¼ä¸è¨èä½æ¨©è
+ããã³TOPPERSãã­ã¸ã§ã¯ããå
+è²¬ãããã¨ï¼ã¾ãï¼
+"      æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãçç±ã«åºã¥
+"      ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
+ããã³TOPPERSãã­ã¸ã§ã¯ããå
+è²¬ãããã¨ï¼
+" 
+"  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
+ãã
+"  ã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®çã«å¯¾ã
+"  ãé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨
+"  ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² 
+"  ããªãï¼
+"
+"
+" Vim indent file
+" Language:     tf (Template File for TOPPERS)
+" Maintainer:   TAKUYA 
+" Last Change:  2011 June 28
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetTFIndent()
+setlocal indentkeys-=0{,0} indentkeys-=0# indentkeys-=:
+setlocal indentkeys+==\$ELSE\$,=\$END\$,0;
+
+" Only define the function once:
+if exists("*GetTFIndent")
+  finish
+endif
+
+" if the line is Comment line then return 1,
+" otherwise, return 0.
+function IsTFCommentLine(line)
+    if getline(a:line) =~ '^\$[ \t]'
+        return 1
+    else
+        return 0
+    endif
+
+endfunction
+
+" calculate indent
+function GetTFIndent()
+    if IsTFCommentLine(v:lnum)
+        return 0
+    endif
+
+	" Find a non-blank line above the current line:
+	let lnum = prevnonblank(v:lnum - 1)
+
+    while IsTFCommentLine(lnum) == 1
+        if lnum == 0
+            return 0
+        endif
+        let lnum = prevnonblank(lnum - 1)
+    endwhile
+
+	" No indent for the start of the file:
+	if lnum == 0
+		return 0
+	endif
+
+	let ind = indent(lnum)
+	let line = getline(lnum)
+
+	" No indentation if the previous line didn't end with "\":
+	" (Could be annoying, but it lets you know if you made a mistake.)
+	if line =~# '\$\(FOREACH\|JOINEACH\|IF\|FUNCTION\)[ ]'
+        if line !~# '\$END\$'
+            let ind = ind + &sw
+        endif
+	elseif line =~# '\$\(ERROR\|WORNING\)[ \$]'
+        if line !~# '\$END\$'
+            let ind = ind + &sw
+        endif
+	elseif line =~# '\$ELSE\$'
+        if line !~# '\$END\$'
+            let ind = ind + &sw
+        endif
+	endif
+
+	let line = getline(v:lnum)
+
+    if line =~# '\$\(ELSE\|END\)\$'
+        let ind = ind - &sw
+
+        if line =~# '\$\(FOREACH\|JOINEACH\|IF\|FUNCTION\)[ ]'
+            let ind = ind + &sw
+        elseif line =~# '\$\(ERROR\|WORNING\)[ \$]'
+            let ind = ind + &sw
+        endif
+    endif
+    
+	return ind
+
+endfunction
Index: /vim_script_tf/trunk/syntax/tf.vim
===================================================================
--- /vim_script_tf/trunk/syntax/tf.vim	(revision 10)
+++ /vim_script_tf/trunk/syntax/tf.vim	(revision 10)
@@ -0,0 +1,138 @@
+" 
+"  TOPPERS Software
+"      Toyohashi Open Platform for Embedded Real-Time Systems
+" 
+"  Copyright (C) 2011 by TAKUYA
+"              Embedded and Real-Time Systems Laboratory
+"              Graduate School of Information Science, Nagoya Univ., JAPAN
+" 
+"  ä¸è¨èä½æ¨©è
+ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§
+"  ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ãä½¿ç¨ã»è¤è£½ã»æ¹å¤ã»
+"  åé
+å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
+"  (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½æ¨©
+"      è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ã¹
+"      ã³ã¼ãä¸­ã«å«ã¾ãã¦ãããã¨ï¼
+"  (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ç¨
+"      ã§ããå½¢ã§åé
+å¸ããå ´åã«ã¯ï¼åé
+å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
+ã
+"      ãã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿
+"      è¨¼è¦å®ãæ²è¼ãããã¨ï¼
+"  (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ç¨
+"      ã§ããªãå½¢ã§åé
+å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºãããã¨ï¼
+"    (a) åé
+å¸ã«ä¼´ããã­ã¥ã¡ã³ãï¼å©ç¨è
+ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½
+"        æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
+"    (b) åé
+å¸ã®å½¢æ
+ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSãã­ã¸ã§ã¯ãã«å ±
+"        åãããã¨ï¼
+"  (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³
+"      ãããï¼ä¸è¨èä½æ¨©è
+ããã³TOPPERSãã­ã¸ã§ã¯ããå
+è²¬ãããã¨ï¼ã¾ãï¼
+"      æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãçç±ã«åºã¥
+"      ãè«æ±ãããï¼ä¸è¨èä½æ¨©è
+ããã³TOPPERSãã­ã¸ã§ã¯ããå
+è²¬ãããã¨ï¼
+" 
+"  æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
+ãã
+"  ã³TOPPERSãã­ã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®çã«å¯¾ã
+"  ãé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨
+"  ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² 
+"  ããªãï¼
+"
+"
+" Vim syntax file
+" Language:	tf (Template File for TOPPERS)
+" Maintainer:	TAKUYA
+" Last Change:	2011 Jun 28
+
+" Quit when a (custom) syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+
+" synã§ã­ã¼ã¯ã¼ãï¼ãã¿ã¼ã³ï¼ç¯å²ã®å
+é ­ã¨çµãããç»é²ãã
+" msã¯ãã¿ã¼ã³ãããã®å§ã¾ãï¼meã¯ãã¿ã¼ã³ãããã®çµãã
+" hsã¯ãã¤ã©ã¤ãã®å§ã¾ãï¼heã¯ãã¤ã©ã¤ãã®çµãã
+
+" æ¬å¼§
+syn match   tfParen "[()]"
+
+syn region  tfSpecialRegion start="\$" end="\$" contains=ALL
+
+" ã³ã¡ã³ã
+syn region  tfComment start="^\$[ \t]" end="$" 
+
+" æå­å
+syn region  tfString start=+"+ skip=+\\"+ end=+"+
+syn region  tfString start=+'+ skip=+\\'+ end=+'+
+
+" å®æ°
+syn match   tfConstant "\$NL\$"
+syn match   tfConstant "\$SPC\$"
+syn match   tfConstant "\$TAB\$"
+syn match   tfConstant "\$ARGC\$"
+syn match   tfConstant "\$ARGV\$"
+syn match   tfConstant "\$RESULT\$"
+
+" å¶å¾¡æ
+syn keyword tfMacro contained FILE
+syn keyword tfMacro contained FUNCTION
+syn keyword tfMacro contained INCLUDE
+syn keyword tfMacro contained IF
+syn keyword tfMacro contained FOREACH
+syn keyword tfMacro contained JOINEACH
+syn keyword tfMacro contained ERROR
+syn keyword tfMacro contained WORNING
+syn match   tfMacro +\$END\$+hs=s+1,he=e-1
+syn match   tfMacro +\$ELSE\$+hs=s+1,he=e-1
+
+" é¢æ°
+syn match   tfLabel contained +LENGTH(+me=e-1
+syn match   tfLabel contained +EQ(+me=e-1
+syn match   tfLabel contained +ALT(+me=e-1
+syn match   tfLabel contained +SORT(+me=e-1
+syn match   tfLabel contained +ENVIRON(+me=e-1
+syn match   tfLabel contained +VALUE(+me=e-1
+syn match   tfLabel contained +CONCAT(+me=e-1
+syn match   tfLabel contained +APPEND(+me=e-1
+syn match   tfLabel contained +AT(+me=e-1
+syn match   tfLabel contained +_(+me=e-1
+syn match   tfLabel contained +FORMAT(+me=e-1
+syn match   tfLabel contained +FIND(+me=e-1
+syn match   tfLabel contained +RANGE(+me=e-1
+syn match   tfLabel contained +SYMBOL(+me=e-1
+syn match   tfLabel contained +PEEK(+me=e-1
+syn match   tfLabel contained +DUMP(+me=e-1
+syn match   tfLabel contained +TRACE(+me=e-1
+syn match   tfLabel contained +NOOP(+me=e-1
+syn match   tfLabel contained +BCOPY(+me=e-1
+syn match   tfLabel contained +ESCSTR(+me=e-1
+syn match   tfLabel contained +UNESCSTR(+me=e-1
+syn match   tfLabel contained +CALL(+me=e-1
+syn match   tfLabel contained +LSORT(+me=e-1
+
+"syn match   tfDollar contained "\$"
+
+"syn cluster tfSpecialChar contains=tfParen,tfDollar
+syn cluster tfSpecialChar contains=tfParen
+
+hi def link tfComment Comment
+hi def link tfConstant Constant
+hi def link tfMacro Macro 
+hi def link tfString String
+hi def link tfLabel Label
+hi def link tfParen SpecialChar
+hi def link @tfSpecialChar SpecialChar
+
+let b:current_syntax = "tf"
+
