xref: /vim-8.2.3635/runtime/syntax/tads.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	TADS
3071d4279SBram Moolenaar" Maintainer:	Amir Karger <[email protected]>
45c73622aSBram Moolenaar" $Date: 2004/06/13 19:28:45 $
55c73622aSBram Moolenaar" $Revision: 1.1 $
6071d4279SBram Moolenaar" Stolen from: Bram Moolenaar's C language file
7071d4279SBram Moolenaar" Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim
8071d4279SBram Moolenaar" History info at the bottom of the file
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" TODO lots more keywords
11071d4279SBram Moolenaar" global, self, etc. are special *objects*, not functions. They should
12071d4279SBram Moolenaar" probably be a different color than the special functions
13071d4279SBram Moolenaar" Actually, should cvtstr etc. be functions?! (change tadsFunction)
14071d4279SBram Moolenaar" Make global etc. into Identifiers, since we don't have regular variables?
15071d4279SBram Moolenaar
1689bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1789bcfda6SBram Moolenaarif exists("b:current_syntax")
18071d4279SBram Moolenaar  finish
19071d4279SBram Moolenaarendif
20071d4279SBram Moolenaar
21071d4279SBram Moolenaar" A bunch of useful keywords
22071d4279SBram Moolenaarsyn keyword tadsStatement	goto break return continue pass
23071d4279SBram Moolenaarsyn keyword tadsLabel		case default
24071d4279SBram Moolenaarsyn keyword tadsConditional	if else switch
25071d4279SBram Moolenaarsyn keyword tadsRepeat		while for do
26071d4279SBram Moolenaarsyn keyword tadsStorageClass	local compoundWord formatstring specialWords
27071d4279SBram Moolenaarsyn keyword tadsBoolean		nil true
28071d4279SBram Moolenaar
29071d4279SBram Moolenaar" TADS keywords
30071d4279SBram Moolenaarsyn keyword tadsKeyword		replace modify
31071d4279SBram Moolenaarsyn keyword tadsKeyword		global self inherited
32071d4279SBram Moolenaar" builtin functions
33071d4279SBram Moolenaarsyn keyword tadsKeyword		cvtstr cvtnum caps lower upper substr
34071d4279SBram Moolenaarsyn keyword tadsKeyword		say length
35071d4279SBram Moolenaarsyn keyword tadsKeyword		setit setscore
36071d4279SBram Moolenaarsyn keyword tadsKeyword		datatype proptype
37071d4279SBram Moolenaarsyn keyword tadsKeyword		car cdr
38071d4279SBram Moolenaarsyn keyword tadsKeyword		defined isclass
39071d4279SBram Moolenaarsyn keyword tadsKeyword		find firstobj nextobj
40071d4279SBram Moolenaarsyn keyword tadsKeyword		getarg argcount
41071d4279SBram Moolenaarsyn keyword tadsKeyword		input yorn askfile
42071d4279SBram Moolenaarsyn keyword tadsKeyword		rand randomize
43071d4279SBram Moolenaarsyn keyword tadsKeyword		restart restore quit save undo
44071d4279SBram Moolenaarsyn keyword tadsException	abort exit exitobj
45071d4279SBram Moolenaar
46071d4279SBram Moolenaarsyn keyword tadsTodo contained	TODO FIXME XXX
47071d4279SBram Moolenaar
48071d4279SBram Moolenaar" String and Character constants
49071d4279SBram Moolenaar" Highlight special characters (those which have a backslash) differently
50071d4279SBram Moolenaarsyn match tadsSpecial contained	"\\."
51071d4279SBram Moolenaarsyn region tadsDoubleString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded
52071d4279SBram Moolenaarsyn region tadsSingleString		start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial
53071d4279SBram Moolenaar" Embedded expressions in strings
54071d4279SBram Moolenaarsyn region tadsEmbedded contained       start="<<" end=">>" contains=tadsKeyword
55071d4279SBram Moolenaar
56071d4279SBram Moolenaar" TADS doesn't have \xxx, right?
57071d4279SBram Moolenaar"syn match cSpecial contained	"\\[0-7][0-7][0-7]\=\|\\."
58071d4279SBram Moolenaar"syn match cSpecialCharacter	"'\\[0-7][0-7]'"
59071d4279SBram Moolenaar"syn match cSpecialCharacter	"'\\[0-7][0-7][0-7]'"
60071d4279SBram Moolenaar
61071d4279SBram Moolenaar"catch errors caused by wrong parenthesis
62071d4279SBram Moolenaar"syn region cParen		transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel
63071d4279SBram Moolenaar"syn match cParenError		")"
64071d4279SBram Moolenaar"syn match cInParen contained	"[{}]"
65071d4279SBram Moolenaarsyn region tadsBrace		transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo
66071d4279SBram Moolenaarsyn match tadsBraceError		"}"
67071d4279SBram Moolenaar
68071d4279SBram Moolenaar"integer number (TADS has no floating point numbers)
69071d4279SBram Moolenaarsyn case ignore
70071d4279SBram Moolenaarsyn match tadsNumber		"\<[0-9]\+\>"
71071d4279SBram Moolenaar"hex number
72071d4279SBram Moolenaarsyn match tadsNumber		"\<0x[0-9a-f]\+\>"
73071d4279SBram Moolenaarsyn match tadsIdentifier	"\<[a-z][a-z0-9_$]*\>"
74071d4279SBram Moolenaarsyn case match
75071d4279SBram Moolenaar" flag an octal number with wrong digits
76071d4279SBram Moolenaarsyn match tadsOctalError		"\<0[0-7]*[89]"
77071d4279SBram Moolenaar
78071d4279SBram Moolenaar" Removed complicated c_comment_strings
79071d4279SBram Moolenaarsyn region tadsComment		start="/\*" end="\*/" contains=tadsTodo
80071d4279SBram Moolenaarsyn match tadsComment		"//.*" contains=tadsTodo
81071d4279SBram Moolenaarsyntax match tadsCommentError	"\*/"
82071d4279SBram Moolenaar
83071d4279SBram Moolenaarsyn region tadsPreCondit	start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError
84071d4279SBram Moolenaarsyn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
85071d4279SBram Moolenaarsyn match tadsIncluded contained "<[^>]*>"
86071d4279SBram Moolenaarsyn match tadsInclude		"^\s*#\s*include\>\s*["<]" contains=tadsIncluded
87071d4279SBram Moolenaarsyn region tadsDefine		start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier
88071d4279SBram Moolenaar
89071d4279SBram Moolenaarsyn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier
90071d4279SBram Moolenaar
91071d4279SBram Moolenaar" Highlight User Labels
92071d4279SBram Moolenaar" TODO labels for gotos?
93071d4279SBram Moolenaar"syn region	cMulti		transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField
94071d4279SBram Moolenaar" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
95071d4279SBram Moolenaar"syn match	cUserCont	"^\s*\I\i*\s*:$" contains=cUserLabel
96071d4279SBram Moolenaar"syn match	cUserCont	";\s*\I\i*\s*:$" contains=cUserLabel
97071d4279SBram Moolenaar"syn match	cUserCont	"^\s*\I\i*\s*:[^:]" contains=cUserLabel
98071d4279SBram Moolenaar"syn match	cUserCont	";\s*\I\i*\s*:[^:]" contains=cUserLabel
99071d4279SBram Moolenaar
100071d4279SBram Moolenaar"syn match	cUserLabel	"\I\i*" contained
101071d4279SBram Moolenaar
102071d4279SBram Moolenaar" identifier: class-name [, class-name [...]] [property-list] ;
103071d4279SBram Moolenaar" Don't highlight comment in class def
104071d4279SBram Moolenaarsyn match tadsClassDef		"\<class\>[^/]*" contains=tadsObjectDef,tadsClass
105071d4279SBram Moolenaarsyn match tadsClass contained   "\<class\>"
106071d4279SBram Moolenaarsyn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\="
107071d4279SBram Moolenaarsyn keyword tadsFunction contained function
108071d4279SBram Moolenaarsyn match tadsFunctionDef	 "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction
109071d4279SBram Moolenaar"syn region tadsObject		  transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef
110071d4279SBram Moolenaar
111071d4279SBram Moolenaar" How far back do we go to find matching groups
112071d4279SBram Moolenaarif !exists("tads_minlines")
113071d4279SBram Moolenaar  let tads_minlines = 15
114071d4279SBram Moolenaarendif
115071d4279SBram Moolenaarexec "syn sync ccomment tadsComment minlines=" . tads_minlines
116071d4279SBram Moolenaarif !exists("tads_sync_dist")
117071d4279SBram Moolenaar  let tads_sync_dist = 100
118071d4279SBram Moolenaarendif
119071d4279SBram Moolenaarexecute "syn sync maxlines=" . tads_sync_dist
120071d4279SBram Moolenaar
121071d4279SBram Moolenaar" Define the default highlighting.
12289bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
123071d4279SBram Moolenaar
124071d4279SBram Moolenaar" The default methods for highlighting.  Can be overridden later
125*f37506f6SBram Moolenaarhi def link tadsFunctionDef Function
126*f37506f6SBram Moolenaarhi def link tadsFunction  Structure
127*f37506f6SBram Moolenaarhi def link tadsClass     Structure
128*f37506f6SBram Moolenaarhi def link tadsClassDef  Identifier
129*f37506f6SBram Moolenaarhi def link tadsObjectDef Identifier
130071d4279SBram Moolenaar" no highlight for tadsEmbedded, so it prints as normal text w/in the string
131071d4279SBram Moolenaar
132*f37506f6SBram Moolenaarhi def link tadsOperator	Operator
133*f37506f6SBram Moolenaarhi def link tadsStructure	Structure
134*f37506f6SBram Moolenaarhi def link tadsTodo	Todo
135*f37506f6SBram Moolenaarhi def link tadsLabel	Label
136*f37506f6SBram Moolenaarhi def link tadsConditional	Conditional
137*f37506f6SBram Moolenaarhi def link tadsRepeat	Repeat
138*f37506f6SBram Moolenaarhi def link tadsException	Exception
139*f37506f6SBram Moolenaarhi def link tadsStatement	Statement
140*f37506f6SBram Moolenaarhi def link tadsStorageClass	StorageClass
141*f37506f6SBram Moolenaarhi def link tadsKeyWord   Keyword
142*f37506f6SBram Moolenaarhi def link tadsSpecial	SpecialChar
143*f37506f6SBram Moolenaarhi def link tadsNumber	Number
144*f37506f6SBram Moolenaarhi def link tadsBoolean	Boolean
145*f37506f6SBram Moolenaarhi def link tadsDoubleString	tadsString
146*f37506f6SBram Moolenaarhi def link tadsSingleString	tadsString
147071d4279SBram Moolenaar
148*f37506f6SBram Moolenaarhi def link tadsOctalError	tadsError
149*f37506f6SBram Moolenaarhi def link tadsCommentError	tadsError
150*f37506f6SBram Moolenaarhi def link tadsBraceError	tadsError
151*f37506f6SBram Moolenaarhi def link tadsInBrace	tadsError
152*f37506f6SBram Moolenaarhi def link tadsError	Error
153071d4279SBram Moolenaar
154*f37506f6SBram Moolenaarhi def link tadsInclude	Include
155*f37506f6SBram Moolenaarhi def link tadsPreProc	PreProc
156*f37506f6SBram Moolenaarhi def link tadsDefine	Macro
157*f37506f6SBram Moolenaarhi def link tadsIncluded	tadsString
158*f37506f6SBram Moolenaarhi def link tadsPreCondit	PreCondit
159071d4279SBram Moolenaar
160*f37506f6SBram Moolenaarhi def link tadsString	String
161*f37506f6SBram Moolenaarhi def link tadsComment	Comment
162071d4279SBram Moolenaar
163071d4279SBram Moolenaar
164071d4279SBram Moolenaar
165071d4279SBram Moolenaarlet b:current_syntax = "tads"
166071d4279SBram Moolenaar
167071d4279SBram Moolenaar" Changes:
168071d4279SBram Moolenaar" 11/18/99 Added a bunch of TADS functions, tadsException
169071d4279SBram Moolenaar" 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines
170071d4279SBram Moolenaar"
171071d4279SBram Moolenaar" vim: ts=8
172