" Vim syntax file
" Language:	Expect
" Maintainer:	Ralph Jennings <knowbudy@oro.net>
" Last Change:	2001 May 09

" 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

" Reserved Expect variable prefixes.
syn match   expectVariables "\$exp[a-zA-Z0-9_]*\|\$inter[a-zA-Z0-9_]*"
syn match   expectVariables "\$spawn[a-zA-Z0-9_]*\|\$timeout[a-zA-Z0-9_]*"

" Normal Expect variables.
syn match   expectVariables "\$env([^)]*)"
syn match   expectVariables "\$any_spawn_id\|\$argc\|\$argv\d*"
syn match   expectVariables "\$user_spawn_id\|\$spawn_id\|\$timeout"

" Expect variable arrays.
syn match   expectVariables "\$\(expect\|interact\)_out([^)]*)"			contains=expectOutVar

" User defined variables.
syn match   expectVariables "\$[a-zA-Z_][a-zA-Z0-9_]*"

" Reserved Expect command prefixes.
syn match   expectCommand    "exp_[a-zA-Z0-9_]*"

" Normal Expect commands.
syn keyword expectStatement	close debug disconnect
syn keyword expectStatement	exit exp_continue exp_internal exp_open
syn keyword expectStatement	exp_pid exp_version
syn keyword expectStatement	fork inter_return interpreter
syn keyword expectStatement	log_file log_user match_max overlay
syn keyword expectStatement	parity remove_nulls return
syn keyword expectStatement	send send_error send_log send_user
syn keyword expectStatement	sleep spawn strace stty system
syn keyword expectStatement	timestamp trace trap wait

" Tcl commands recognized and used by Expect.
syn keyword expectCommand		proc
syn keyword expectConditional	if else
syn keyword expectRepeat		while for foreach

" Expect commands with special arguments.
syn keyword expectStatement	expect expect_after expect_background			nextgroup=expectExpectOpts
syn keyword expectStatement	expect_before expect_user interact			nextgroup=expectExpectOpts

syn match   expectSpecial contained  "\\."

" Options for "expect", "expect_after", "expect_background",
" "expect_before", "expect_user", and "interact".
syn keyword expectExpectOpts	default eof full_buffer null return timeout

syn keyword expectOutVar  contained  spawn_id seconds seconds_total
syn keyword expectOutVar  contained  string start end buffer

" Numbers (Tcl style).
syn case ignore
  syn match  expectNumber	"\<\d\+\(u\=l\=\|lu\|f\)\>"
  "floating point number, with dot, optional exponent
  syn match  expectNumber	"\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
  "floating point number, starting with a dot, optional exponent
  syn match  expectNumber	"\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
  "floating point number, without dot, with exponent
  syn match  expectNumber	"\<\d\+e[-+]\=\d\+[fl]\=\>"
  "hex number
  syn match  expectNumber	"0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
  "syn match  expectIdentifier	"\<[a-z_][a-z0-9_]*\>"
syn case match

syn region  expectString	start=+"+  end=+"+  contains=expectVariables,expectSpecial

" Are these really comments in Expect? (I never use it, so I'm just guessing).
syn keyword expectTodo		contained TODO
syn match   expectComment		"#.*$" contains=expectTodo

" 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_expect_syntax_inits")
  if version < 508
    let did_expect_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  HiLink expectVariables	Special
  HiLink expectCommand		Function
  HiLink expectStatement	Statement
  HiLink expectConditional	Conditional
  HiLink expectRepeat		Repeat
  HiLink expectExpectOpts	Keyword
  HiLink expectOutVar		Special
  HiLink expectSpecial		Special
  HiLink expectNumber		Number

  HiLink expectString		String

  HiLink expectComment		Comment
  HiLink expectTodo		Todo
  "HiLink expectIdentifier	Identifier

  delcommand HiLink
endif

let b:current_syntax = "expect"

" vim: ts=8
