summaryrefslogtreecommitdiff
path: root/support/lgrind/lgrindef
blob: c2311f86886108a59d3165f89874afb30c9b7840 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
# Database of program templates for lgrind
# $Id: lgrindef,v 1.7 2000/12/27 21:42:37 mike Exp $

Ada:\
	:pb=(^\d?procedure|function\d\p\d|\():\
	:np=;\d?$:id=_.:\
	:bb=\d(begin|case|do|if|loop|select)\d:be=\dend\d|;:\
	:rb=(\=|\:|\d|^)(protected|record):\
	:oc:\
	:cb=--:ce=$:ab=--:ae=$:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=":se=":lb=':le=':\
	:kw=abort abs accept access aliased all and array at begin body case\
	constant declare delay delta digits do else elsif end entry exception exit\
	for function generic goto if in is limited loop mod new not null of or\
	others out package pragma private procedure protected raise range record\
	rem renames requeue return reverse select separate subtype tagged task\
	terminate then type until use when while with xor:

Asm:\
	:oc:\
	:cb=#:ce=$:ab=/*:ae=*/:\
	:sb=':se=':lb=":le=":\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=ascii block byte end equ globl text data word even long\
	#else #endif #if #ifdef #ifndef #include #undef #define else endif\
	if ifdef ifndef include undef define:

Asm68:\
	:pb=(^\d?.proc\d\p\d:\
	:oc:\
	:cb=;:ce=$:\
	:sb=':se=':lb=":le=":\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=ascii block byte end equ include long proc word:

# JL - Added QBASIC Aug 95
BASIC:\
	:pb=^\d?*?\d?\p\d?\(\a?\)(\d|{):bb={:be=}:\
	:cb=':ce=$:sb=":se=":\
	:le=\e':tl:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw= ABS APPEND ABSOLUTE AS ACCESS ASC AND ATN ANY \
	BASE BLOAD BEEP BSAVE BINARY                       \
	CALL COLOR CALL ABSOLUTE COM CASE COMMON CDBL CONST\
	CHAIN COS CHDIR CSNG CHR$ CSRLIN CINT CVD CIRCLE CVDMBF\
	CLEAR CVI CLNG CVL CLOSE  CVS CLS CVSMBF               \
	DATA  DEFLNG DEFSNG DATE$ DEFSTR DATE$ DIM DECLARE DO LOOP\
	DEF FNDOUBLE DEF SEG DRAW DEFDBL $DYNAMIC DEFINT        \
	ELSE  ERDEV ELSEIF ERDEV$ END ERL ENVIRON ERR ENVIRON$ \
	ERROR EOF EXIT EQV EXP ERASE                           \
	FIELD FOR NEXT FILEATTR FRE FILES FREEFILE FIX FUNCTION\
	GET  GOSUB GET GOTO                                    \
	HEX$ IF THEN ELSE INSTR IMP INT INKEY$ INTEGER         \
	INP IOCTL INPUT IOCTL$ INPUT$ IS                       \
	KEY KILL KEY                                           \
	LBOUND LOCK UNLOCK LCASE$ LOF LEFT$ LOG LEN LONG LET LOOP\
	LINE LPOS LINE INPUT LPRINT LIST LPRINT USING LOC LSET LOCATE LTRIM$\
	MID$  MKI$ MID$ MKL$ MKD$ MKS$ MKDIR MKSMBF$ MKDMBF$ MOD \
	NAME NOT NEXT                                          \
	OCT$ ON TIMER OFF ON GOSUB ON COM ON GOTO ON ERROR OPEN \
	ON OPEN COM ON KEY OPTION BASE ON PEN OR ON PLAY OUT ON STRIG OUTPUT \
	PAINT POINT PALETTE  POKE PCOPY POS PEEK PRESET PEN PRINT \
	PEN PRINT USING PLAY PSET PLAY PUT PLAY PUT PMAP          \
	RANDOM RETURN RANDOMIZE RIGHT$ READ RMDIR REDIM RND REM RSET RESET \
	RTRIM$ RESTORE RUN RESUME                                      \
	SCREEN SQR STATIC SEEK $STATIC SEEK STEP SELECT CASE STICK SGN STOP \
	SHARED STR$ SHELL STRIG SIN STRIG SINGLE STRING SLEEP STRING$   \
	SOUND SUB SPACE$ SWAP SPC SYSTEM                            \
	TAB TIMER TAN TO THEN TROFF TIME$ TRON TIME$ TYPE TIMER     \
	UBOUND UNTIL UCASE$ USING UNLOCK                            \
	VAL VARSEG VARPTR VIEW VARPTR$ VIEW                         \
	WAIT WIDTH WEND WINDOW WHILE WEND WRITE                     \
	XOR :                                                       

# DOS Batch file language description for the LGrind pretty-printer
# Jim Green <j.j.green@shef.ac.uk>  11/15/96 Notice that the tex block
# is a triple-precent rather than a double, and that `program text
# within a comment' also has an added percent (to avoid conflicts with
# environmental variables and `@echo off' statements respectively).
# This assumes that it is possible to write a batch file sufficiently
# complex to need such explanation.
Batch|bat:\
	:pb=^\d?\:\p\d?$:\
	:cb=rem :ce=$:\
	:sb=echo:se=$:\
	:zb=%@:ze=%@:tb=%%%:te=%%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=call do echo @echo exist for goto if in not pause rem shift:

C:\
	:pb=\p\d?\(:cf:np=\)\d?;:bb={:be=}:\
	:cb=/*:ce=*/:sb=":se=\e":lb=':le=\e':\
	:tl:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=asm auto break case cdecl char continue default do double else\
	enum extern far float for fortran goto huge if int interrupt long\
	near pascal register return short signed sizeof static struct\
	switch typedef union unsigned void while\
	#define #else #endif #if #ifdef #ifndef #include #undef # define\
	else endif if ifdef ifndef include undef #pragma #elif pragma elif\
	#module #dictionary module dictionary\
	variant_struct variant_union\
	noshare readonly globaldef globalref globalvalue main_program:
#Last couple of lines are partial ANSI, plus VAX-C specific

C++|CC:\
	:pb=\p\d?\(:cf:np=\)\d?;:bb={:be=}:\
	:cb=/*:ce=*/:ab=//:ae=$:sb=":se=\e":lb=':le=\e':\
	:tl:id=_~\::\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=and and_eq asm auto bitand bitor bool break case catch char class\
	compl const const_cast continue default delete do double dynamic_cast\
	else enum explicit export extern false float for friend goto if inline\
	int long mutable namespace new not not_eq operator or or_eq private\
	private\: protected protected\: public public\: register\
	reinterpret_cast return short signed sizeof static static_cast struct\
	switch template this throw true try typedef typeid typename union\
	unsigned using virtual void volatile wchar_t while xor xor_eq\
	static_cast const_cast dynamic_cast reinterpret_cast\
	#define #else #endif #if #ifdef #ifndef #include #undef #pragma #\
	define else endif if ifdef ifndef include undef defined:

csh:\
	:bb={:be=}:cb=#:ce=$:sb=":se=\e":lb=':\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:le=\e':tl:\
	:kw=alias alloc break breaksw case cd chdir continue default\
	echo else end endif endsw exec exit foreach \
	glob goto history if logout nice nohup onintr repeat set\
	setenv shift source switch then time \
	while umask unalias unset wait while @ env \
	argv child home ignoreeof noclobber noglob \
	nomatch path prompt shell status verbose :

FORTRAN|f77|f:\
	:pb=(function|subroutine|program)\d\p\d?\(\a?\):\
	:bb=(function|subroutine|program)\d\p\d?\(\a?\):be=^\dend\d:\
	:cb=^(c|C|*):ce=$:\
	:sb=':se=':\
	:oc:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=call character close common complex continue data dimension do\
	double else elseif end enddo endif entry equivalence format function\
	goto if implicit include integer logical open pause parameter print\
	precision program read real return stop subroutine then write\
	gt ge lt le eq ne and or not false true:
# The last should contain a lot more periods. But LGrind's parser doesn't like
# them. So you can't use 'gt' as identifier. (Who would want to, anyway?)

Gnuplot:\
	:pb=\d?\p\(\a\)=:\
	:cb=#:ce=$:\
	:sb=("|'):se=("|'):\
	:zb=@:ze=@:\
	:tb=%%:te=%%::mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=cd clear exit load pause plot pwd quit replot save set showsplot\
	title using with:    

Icon:\
	:pb=^\d?procedure\d\p\d?\(\a?\):\
	:bb=(^\d?procedure\d\p\d?\(\a?\))|{:be=}|(^\d?end\d?$):\
	:cb=#:ce=$:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=":se=\e":lb=':le=\e':tl:\
	:kw=break by case create default do dynamic else end every external\
	fail global if initial local next not of procedure record\
	repeat return static suspend then to until using while\
	&ascii &clock &cset &date &dateline &errout &fail &host &input\
	&lcase &level &main &null &output &pos &random &source &subject\
	&time &trace &ucase &version:

# Written by Diego Berrueta <diego@berrueta.net>
IDL:\
	:pb=\p\d?\(:cf:np=\)\d?;:bb={:be=}:\
	:cb=/*:ce=*/:ab=//:ae=$:sb=":se=\e":lb=':le=\e':\
	:tl:id=_~\::\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=abstract any attribute boolean case char const context \
	custom default double exception enum factory FALSE fixed float \
	in inout interface local long module native Object\
	octet oneway out private public raises readonly sequence short \
	string struct supports switch TRUE truncatable typedef unsigned \
	union ValueBase valuetype void wchar wstring\
	#define #else #endif #if #ifdef #ifndef #include #undef #pragma #\
	define else endif if ifdef ifndef include undef defined:

ISP:\
	:cb=!:ce=!|$:oc:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=and begin decode define end eql eqv geq gtr if leave leq lss mod\
	neq next not or otherwise repeat restart resume sr0 sr1 srd\
	srr sl0 sl1 sld slr tst xor:

Java:\
	:pb=\p\d?\(:cf:np=\)\d?;:bb={:be=}:\
	:cb=/*:ce=*/:ab=//:ae=$:sb=":se=\e":lb=':\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:le=\e':tl:id=_~\:\
	:kw=abstract boolean break byte byvalue case catch char class const\
	continue default do double else extends false final finally float for goto\
	if implements import instanceof int interface long native new null package\
	private protected public return short static super switch synchronized this\
	throw throws true try void volatile while:
# Somewhere these come from, but they are not in my Java book.
#	:kw=cast future generic inner rest transient var:


Kimwitu++|kimw:\
	:pb=\p\d?\(:cf:np=\)\d?;:bb={:be=}:\
	:cb=/*:ce=*/:ab=//:ae=$:sb=":se=\e":lb=':le=\e':\
	:tl:id=_~\::\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=and and_eq asm auto bitand bitor bool break case catch char class\
	compl const const_cast continue default delete do double dynamic_cast\
	else enum explicit export extern false float for foreach friend goto\
	if inline int long mutable namespace new not not_eq operator or or_eq\
	private private\: protected protected\: provided public public\:\
	register reinterpret_cast return rview short signed sizeof static\
	static_cast struct switch template this throw true try typedef typeid\
	typename union unsigned using uview virtual void volatile wchar_t\
	while with xor xor_eq\
	static_cast const_cast dynamic_cast reinterpret_cast\
	#define #else #endif #if #ifdef #ifndef #include #undef #pragma #\
	define else endif if ifdef ifndef include undef defined:

# JL - Jan 96 Added LaTeX
# JL - May 96 LaTeX-2e additions
LaTeX:\
	:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:cb=%:ce=$:kw=\
	abstract addcontentsline addtocontents addtocounter address  addtolength \
	addvspace alph appendix arabic array article author begin bf bfseries \
	bibitem bigskip book \
	cdots center centering  circle cite cleardoublepage clearpage \
	cline closing color colorbox dashbox date ddots definecolor description \
	displaymath document documentclass documentstyle dotfill em emph end \
	enumerate eqnarray equation fbox fcolorbox figure flushbottom flushleft \
	flushright fnsymbol footnote footnotemark footnotesize footnotetext frac \
	frame framebox hfill hline hhline hrulefill hspace huge Huge hyphenation \
	include includeonly indent input it itemize itshape kill label large \
	Large LARGE ldots letter line linebreak linethickness list location \
	makebox maketitle mark mbox mdseries medskip minipage multicols \
	multicolumn multiput newcommand newcounter newenvironment newfont \
	newlength newline newpage newsavebox newtheorem nocite noindent \
	nolinebreak normalfont normalsize nopagebreak onecolumn opening oval \
	overbrace overline pagebreak pagecolor pagenumbering pageref pagestyle \
	par parbox picture put quotation quote raggedbottom raggedleft \
	raggedright raisebox ref report resizebox rm rmfamily roman rotatebox \
	rule savebox sc scriptsize setcounter setlength settowidth scalebox \
	sf sffamily shortstack signature sl slshape small smallskip sqrt \
	tabbing table tabular telephone \
	textbf textit textmd textrm textsc textsf textsl texttt textup \
	thanks thebibliography theorem thispagestyle tiny title titlepage \
	tt ttfamily twocolumn typeout typein \
	underbrace underline upshape usebox usecounter usepackage \
	value vdots vector verb \
	verbatim  verse vfill vline vspace :

LDL:\
	:pb=^\p\::bb=\::be=;:cb=/*:ce=*/:sb=":se=\e":\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=constant functions grammar reswords tokens add1 addste\
	car cdr check colno cond cons copy defun divide empty enter\
	eq equal findattr firstchild ge getattr getfield gt hash label\
	lambda lastchild le leftsibling lookone lookup lt minus name ne\
	newnode nextcom nil null parent plus precnl prevcom prog progn\
	quote reglob return rightsibling self set setattr setfield setq\
	stjoin sub1 t times tnull tokno ttype:

Lex:\
	:lb=[|':le=]|\e':tc=C++:

#Linda is just like C, with a couple of extra keywords.  Note:  The non-
#blocking operations are included, as are the pre-defined VAX Linda-C macros.
Linda:\
	:pb=^\d?*?\d?\p\d?\(\a?\)(\d|{):bb={:be=}:\
	:cb=/*:ce=*/:sb=":se=\e":lb=':\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:le=\e':tl:\
	:kw=asm auto break case char continue default do double else enum\
	extern float for fortran goto if int long register return short\
	sizeof static struct switch typedef union unsigned void while #define\
	#else #endif #if #ifdef #ifndef #include #undef # define else endif\
	if ifdef ifndef include undef\
	#pragma #elif pragma elif #line\
	#module #dictionary module dictionary\
	variant_struct variant_union\
	noshare readonly globaldef globalref globalvalue main_program\
	in inp rd rdp out eval newtype varying nchar\
	$ARR $ARRAY $ARRAY_TYPE $MAKE_ARRAY\
	$STR $STRING $STRING_TYPE $SET_DIM $MAKE_STRING\
	#ttcontext ttcontext:

make:\
        :cb=#:ce=$:\
        :sb=':se=':lb=":le=":\
        :id=-_:\
        :zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
        :kw=define endef ifeq ifneq else endif include override export unexport vpath\
        subst patsubst strip findstring filter filter-out sort dir notdir suffix basename\
        addsuffix addprefix join word words firstword wildcard shell origin foreach:

# JL - 'masm' (Microsoft Assembler) by way of
# modification of 'asm' style provided above.
# The instructions are *not* defined as keywords here.
MASM:\
	:oc:\
	:cb=;:ce=$:ab=/*:ae=*/:\
	:sb=':se=':lb=":le=":\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=ascii block globl even long\
	286 386 486 \
	code data dosseg end endp equ \
	huge large medium model proc small stack tiny title :

# JL - Added MATLAB Jan 96
# Note: the string delimiter ' is also used as a transpose operator
# causing the rest of the line to be interpreted as a string.
MATLAB:\
	:pb=^\d?*?\d?\p\d?\(\a?\)(\d|{):bb={:be=}:\
	:cb=%:ce=$:sb=':se='|$|;:\
	:le=\e':tl:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw= \
	abs acos acosh acot acoth acsc acsch  \
	airfoil all andrew angle angle ans any arith  \
	asec asech asin asinh atan atan2 atanh auread  \
	auwrite axes axis balance bar bartlett bench bessel  \
	bessela besselap besself besseli besselj besselk bessely beta  \
	betacore betainc betaln bilinear blackman blanks blt bone  \
	boxcar break brighten bucky buttap butter buttonv buttord  \
	cart2pol cart2sph caxis cceps cd cdf2rdf cedit ceil  \
	census censusex cheb1ap cheb1ord cheb2ap cheb2ord chebwin cheby1  \
	cheby2 choices choicex chol cinvert cla clabel clc  \
	clear clf clg clock close cohere colmmd colon  \
	colormap colormenu colperm colstyle comet comet3 compan compass  \
	computer cond condest conj contour contour3 contourc contrast  \
	conv conv conv2 conv2 convmtx cool copper corrcoef  \
	corrcoef cos cosh cot coth cov cov cplxdemo  \
	cplxgrid cplxmap cplxpair cplxpair cplxroot cputime cross csc  \
	csch csd cumprod cumsum cylinder czt cztdemo d  \
	datalist date dbclear dbcont dbdown dbquit dbstack dbstatus  \
	dbstep dbstop dbtype dbup dc2sc dct deblank debug  \
	dec2hex decimate deconv deconv del2 delete delsq delsqdemo  \
	delsqshow demo demod det detrend dftmtx diag diary  \
	diff dir diric disp dmperm dos drawnow earthex  \
	earthmap echo eig eigmovie ellip ellipap ellipj ellipk  \
	ellipke ellipord else elseif end eps erf erfc  \
	erfcore erfcx erfinv error errorbar etime etree etreeplot  \
	eval exist exp expm expm1 expm2 expm3 eye  \
	fclose feather feof ferror feval fft fft fft2  \
	fft2 fftdemo fftfilt fftshift fftshift fftshift fgetl fgets  \
	figtext figure fill fill3 filtdemo filter filter filter2  \
	filtfilt filtic find findstr finite fir1 fir2 firls  \
	fitdemo fitfun fix flag fliplr flipud floor flops  \
	fmin fmins fopen foptions for format fourier fplot  \
	fplotdemo fprintf fread freqs freqspace freqz frewind fscanf  \
	fseek ftell full function funm fwrite fzero gallery  \
	gamma gammainc gammaln gca gcd gcf get getenv  \
	getframe ginput global gplot gradient gray graymon grid  \
	griddata grpdelay gtext hadamard hamming hankel hanning hardcopy  \
	help hess hex2dec hex2num hidden highlight hilb hilbert  \
	hint hist hold home hostid hot hsv hsv2rgb  \
	humps i icubic idct ident if ifft ifft  \
	ifft2 ifft2 iffuse imag image imagedemo imageext imagesc  \
	impinvar impz imread imtext imwrite inf info input  \
	inquire int2str interp interp1 interp1 interp2 interp3 interp4  \
	interp5 interpft intfilt intro inv inverf invfreqs invfreqz  \
	invhilb isempty isglobal ishold isieee isinf isletter isnan  \
	issparse isstr isunix j jet kaiser keyboard knot  \
	kron lalala lasterr lcm legend length levinson life lifeloop  \
	lin2mu line linspace load loadwave log log10 log2  \
	loglog logm logspace lookfor lorenz lorenzeq lotka lower  \
	lp2bp lp2bs lp2hp lp2lp lpc ls lscov lu  \
	magic man mathlist matlabro max mean medfilt1 median  \
	membrane memory menu mesh meshc meshdom meshgrid meshz  \
	meta min mkpp mmove2 moddemo modulate more movie  \
	moviein mu2lin nalist nan nargchk nargin nargout nestdiss  \
	nested newplot nextpow2 nnls nnz nonzeros norm normest  \
	null num2str numgrid nzmax ode23 ode23p ode45 odedemo  \
	ones orient orth pack paren pascal patch path  \
	pause pcolor peaks penny pi pink pinv planerot  \
	plot plot3 pol2cart polar poly poly2rc polyder polyfit  \
	polyline polymark polystab polyval polyvalm pow2 ppval print  \
	printopt prism prod prony psd punct puzzle pwd  \
	qr qrdelete qrinsert quad quad8 quad8stp quaddemo quadstp  \
	quake quit quiver qz rand randn randperm rank  \
	rat rats rbbox rc2poly rceps rcond readme real  \
	realmax realmin relop rem remez remezord resample reset  \
	reshape resi2 residue residuez return rgb2hsv rgbplot rjr  \
	roots rose rosser rot90 round rref rrefmovie rsf2csf  \
	save savewave sawtooth saxis sc2dc schur script sec  \
	sech semilogx semilogy sepdemo sepplot set setstr shading  \
	shg showwind sig1help sig2help sigdemo1 sigdemo2 sign sin  \
	sinc sinh size slash slice sort sos2ss sos2tf  \
	sos2zp sound sounddemo soundext spalloc sparlist sparse sparsfun  \
	sparsity spaugment spconvert spdiags specgram specials spectrum specular  \
	speye spfun sph2cart sphere spinmap spiral spline spline  \
	spline2d spones spparms sprandn sprandsym sprank sprintf spy  \
	spypart sqdemo sqrt sqrtm square ss2sos ss2tf ss2zp  \
	sscanf stairs std stem stem stmcb str2mat str2num  \
	strcmp strings strips subplot subscribe subspace sum sunspots  \
	superquad surf surface surfc surfl surfnorm svd swapprev  \
	symbfact symmmd symrcm table1 table2 tan tanh tempdir  \
	tempname terminal text tf2ss tf2zp tfe tffunc tic  \
	title toc toeplitz trace trapz treelayout treeplot triang  \
	tril triu type uicontrol uigetfile uimenu uiputfile uisetcolor  \
	uisetfont unix unmesh unmkpp unwrap unwrap upper vander  \
	vco ver version vibes view viewmtx waterfall what  \
	whatsnew which while white whitebg who whos why  \
	wilkinson xcorr xcorr2 xcov xlabel xor xyzchk ylabel  \
	yulewalk zerodemo zeros zlabel zp2sos zp2ss zp2tf zplane :

# Courtesy of Dominique de Waleffe (ddw@miscrit.be)
Mercury:\
        :bb=\:-:be=.:cb=%:ce=$:ab=/*:ae=*/:\
        :zb=@:ze=@:tb=%*%:te=%*%:mb=%*\$:me=\*$%:vb=%*\|:ve=\|*%:\
        :sb=":se=\e":lb=':le=\e':oc:\
        :kw=pred type module import_module mode \:\: -> --> ---> \:-\
        pragma func lambda det semidet multi cc_multi failure nondet\
        true fail is in out di uo ui interface implementation:

# This entry makes use of new capabilities added to support the description
# of lisp-like languages (id, pl, and px).  The set of keywords given is a
# matter of taste.  It would be reasonable to add all the wired functions to
# the list.
MLisp|Emacs Mock Lisp:\
	:cb=;:ce=$:lb=':le=\e':sb=":se=\e":bb=\(:be=\):\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:id=_-$#@./,%&?!^*+~`|;<>'\::\
	:kw=defun if progn while:pl:px=\d\(defun:pb=^\d\(\p($|(\d\a$)):

SML/NJ:ML:\
	:cb=\(\*:ce=\*\):\
	:pb=fun:\
	:id=_':\
	:lb=(#)":le=":sb=":se=\e":\
	:kw=fun let in end if then else andalso orelse and val fun structure\
	exception infix infixr nonfix type abstype datatype withtype with\
	local rec open use sig eqtype functor signature handle raise fn while\
	do case of as \:\: ... => -> |:

# Scheme has a funky character quoting mechanism, 'a' in C is #\a in
# Scheme.  Lgrind doesn't deal with this well.  I tried a few different
# things, and decided the best option was to punt.
Scheme|scm:\
	:cb=;:ce=$:\
	:lb=(#):le=(\\):\
	:sb=":se=\e":\
	:id=_-$#@./,%&?!^*+~`|;<>'\::\
	:pb=\(define\d\(:\
	:kw=define lambda let:

model:\
	:pb=^\d(space\d\p\drep)|(\p\dis|inline|public\dbeginproc):\
	:bb=\dbeginproc|space|case\d:be=\dendproc|end\d|;:\
	:cb=\$:ce=\$|$:sb=":se=":lb=':le=\a|$:\
	:kw=abs and array beginproc boolean by case cdnl char copied dispose\
	div do dynamic else elsif end endproc entry external FALSE false\
	fi file for formal fortran global if iff ift\
	in integer include inline is lbnd\
	max min mod new NIL nil noresult not notin od of or procedure public\
	read readln readonly record recursive rem rep repeat res\
	result return set\
	space string subscript such then TRUE true type ubnd union until\
	varies while width:

Modula2|mod2|m2:\
	:pb=(^\d?(PROCEDURE|MODULE)\d\p\d|\(|;|\:)|(=|\:\d?RECORD\d):\
	:np=FORWARD:id=_.:\
	:bb=\d(BEGIN|CASE|FOR|IF|LOOP|WHILE|WITH|CLASS)\d:\
	:be=\dEND\d|;:\
	:cb=\(*:ce=*\):\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=":se=":lb=':le=':\
	:kw=AND ARRAY BEGIN BY CASE CONST\
	DEFINITION DIV DO ELSE ELSIF END EXIT EXPORT\
	FOR FROM IF IMPLEMENTATION IMPORT IN\
	LOOP MOD MODULE NOT OF OR POINTER PROCEDURE QUALIFIED\
	RECORD REPEAT RETURN SET THEN TO TYPE\
	UNTIL VAR WHILE WITH:

# Of course this is not simple Pascal anymore. Borland set THE standard
# for a modern Pascal. Available as Delphi or Free Pascal.
Pascal|pas|p|bp:\
	:pb=(^\d?procedure|function|constructor|destructor\d\p\d|\(|;|\:):\
	:np=forward:id=_.:\
	:bb=\d(case|begin|asm)\d:be=\dend\d|;:\
	:rb=(\=|\:|\d|^)(record|object(\(\a\))?)(\d|$):\
	:oc:\
	:cb={:ce=}:ab=\(*:ae=*\):\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=':se=':\
	:kw=and asm array begin case const constructor destructor div do\
	downto else end end. exports file for function goto if implementation\
	in inherited inline interface label library mod nil not object of or\
	packed procedure program record repeat set shl shr then to type unit\
	until uses var while with xor\
	$ifdef $ifndef $ifopt $else $endif\
	absolute assembler export external far forward index interrupt\
	name near private public resident virtual\
	break continue exit halt:
# The last four are not keywords, but procedures, but they are far more than
# normal and deserve to be treated as if (at least by a pretty printer).
# The 14 modifiers in the last two lines but one also should be treated
# specially though they are not keywords. "string", on the other hand, IS
# a keyword, but since "integer", "boolean" etc. are not, along with any
# self defined type whatsoever, it is not in this list.

#Perl definition; snarfed from the net
PERL|pl:\
	:pb=^\d?sub\d\p(\d|{):\
	:bb={:be=}:cb=\d#:ce=$:sb=":se=\e":lb=':le=\e':\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:tl:\
	:kw=if until while elsif else unless for foreach continue sub\
	accept and atan2 bind chdir chmod chop chown chroot close\
	closedir cmp connect cos crypt dbmclose dbmopen defined delete die\
	do dump each eof eq eval exec exit exp fcntl fileno flock fork\
	getc getlogin getpeername getpgrp getppid getpriority getpwnam\
	getgrnam gethostbyname getnetbyname getprotobyname getpwuid getgrgid\
	getservbyname gethostbyaddr getnetbyaddr getprotobynumber\
	getservbyport getpwent getgrent gethostent getnetent getprotoent\
	getservent gt setpwent setgrent sethostent setnetent setprotoent\
	setservent endpwent endgrent endhostent endnetent endprotoent\
	endservent ge getsockname getsockopt gmtime goto grep hex ioctl\
	index int join keys kill last le length link listen local localtime\
	log lstat lt m mkdir ne next not oct open opendir or ord pack pop print printf\
	push q qq rand read readdir readlink recv redo rename reset return\
	reverse rewinddir rindex rmdir s seek seekdir select setpgrp send\
	setpriority setsockopt shift shutdown sin sleep socket socketpair\
	sort split sprintf sqrt srand stat study substr syscall system\
	symlink tell telldir time times tr y umask undef unlink unpack\
	unshift utime values vec wait wantarray warn write x xor:

PostScript|ps:\
	:oc:\
	:cb=%:ce=$:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=\(:se=\e\):\
	:kw=forall array null dict begin end def store string \
	exec if ifelse repeat for loop exit stop stopped quit \
	start save restore gsave grestore grestoreall definefont \
	newpath initgraphics erasepage showpage copypage initclip \
	clip eoclip fill eofill stroke image imagemask:

PROLOG:\
	:bb=\:-:be=.$:cb=%:ce=$:ab=/*:ae=*/:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=":se=\e":lb=':le=\e':oc:\
	:kw=op mod abort ancestors arg ascii ask assert asserta assertz\
	atom atomic char clause close concat consult ed ef em eof fail\
	file findall write functor getc integer is length listing load name\
	nl nonvar not numbervars op or pp prin print private prompt putc\
	ratom read read_from_this_file rename repeat retract retractall\
	save see seeing seen sh skip statistics subgoal_of system tab\
	tell telling time told trace true unload untrace var write:

Python|py:\
	:pb=^\d?(def|class)\d\p(\d|\\|\(|\:):\
	:cb=#:ce=$:sb=":se=\e":lb=':le=\e':\
	:kw=accept and break class continue def del elif else except\
	exec finally for from global if import in is lambda not or\
	pass print raise return try while:

RATFOR:\
	:pb=^\d?program|subroutine|function|(integer|real|complex|character\dfunction)\d\p\d|\(:\
	:bb={:be=}:cb=#:ce=$:sb=":se=":lb=':le=':oc:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw= break call case character common complex data default define\
	dimension do else end equivalence external false for function go\
	goto if implicit include integer logical next pause program read\
	real repeat return rewind stop string subroutine switch true until\
	while write:

# RLaB language description for the LGrind pretty-printer
# Jim Green <j.j.green@shef.ac.uk>  10/15/96
RLaB:\
 :pb=^\d?\p\d?=\d?function\d?\(:\
 :bb={:be=}:\
 :cb=//:ce=$:\
 :sb=":se=":\
 :tl:\
 :zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
 :kw= \
 abs acos all any asin asinh atan atan2 atanh autospec  \
 avsmooth backsub balance bandred banner besselj bessely  \
 bodetf break cd ceil center chol choose chop class clear  \
 clearall close command command_ compan compleme complex  \
 conditio conj continua continue corr cos cosh cross cumprod  \
 cumsum czt det detrend diag diary diff disp division dlopen  \
 dot eig epsilon erf error errors eval examples exist exp  \
 expm eye factor faxis fft fftplot files filter find finite  \
 fix fliplr flipud floor fmin for format fprintf fread frexp  \
 fseek function funm fvscope gamma getb getenv getline  \
 getplot global hankel help hess hex hilb hilbert house if  \
 ifft imag in inf input int int2str intersec intro inv isempty  \
 isinf isnan isreal issymm join jordan keywords lagrange  \
 lcheck length lininsrt linspace lintrp list lmsale load  \
 loaddir local log log10 log2 logb logm logspace lu lyap max  \
 max2 maxi mdsmax mdsmooth mean median members min min2 mini  \
 mod mret nan nextpow2 nmsmax norm num2str ode ode4 ode78  \
 ones open operator pascal pause pclose pend pinv plalt  \
 plaspect plaxis plaz plclose plcont plegend plend plerry  \
 plfont plgrid plgrid3 plhist plhistx plhold plhold_o plimits  \
 plline plmesh plot plot3 plplot plpoint plprint plptex  \
 plscol0 plsfile plstart plstyle pltitle plwid plwin poly  \
 printf printmat prod pstart ptitle putenv pwin qq_norma qr  \
 quadr rand rank rcond read readb readm real redit  \
 relation rem replot require reshape return rfile rk4 rlab roots  \
 rot90 round save scalars schord schur section set set3d show  \
 show_pro showpwin sign sin sinh size sizeof solve sort  \
 spectrog sprintf sqrt srand static std steng stmag string  \
 strsplt strtod stzcr subplot sum surspl svd sylv symm system  \
 tan tanh temp tempacosh tempangle tic tmpnam toc toeplitz  \
 trace transpos trapz trig tril triu type union variable  \
 vector while window write writeb writem xlabel  \
 ylabel zeros zlabel:

# It's not obvious what constitutes a "procedure definition" in Russell.
# This entry doesn't even try...
Russell:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:cb=\(*:ce=*\):kw=cand cor do od if fi else enum record prod union\
	extend export hide with constants let use in ni val var func type\
	field characters readonly:sb=":se=":lb=':le=':

SAS:\
	:pb=(^\d?(data|start|%macro)\d\p\d|\(|;):\
	:cb=/*:ce=*/:\
	:ab=^\d?*:ae=;:\
	:sb=":se=":lb=':le=':\
	:oc:\
	:bb=\d(do|select)\d:\
	:be=\dend;:\
	:kw=proc data by cards do drop else end file filename format go if \
	 input infile keep label length libname merge options output put \
	 retain rename run then title to select set stop until update \
	 when where while %include %macro %mend %do %end %if %then %let:

SDL:\
	:cb=/*:ce=*/:\
	:ab=comment:ae=;:\
	:sb=":se=":lb=':le=':\
	:oc:\
	:kw=task else nextstate in out with from interface to via env and use fpar \
	 process procedure block system service type endprocess endprocedure endblock \
	 endsystem endservice package endpackage channel endchannel signalroute connect \
	 synonym dcl signal gate timer signallist create output set reset call operators \
	 literals all state endstate input start stop return none decision enddecision \
	 join virtual redefined finalized adding inherits remote exported imported:

sh:\
	:bb={:be=}:cb=#:ce=$:sb=":se=\e":lb=':\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:le=\e':tl:\
	:kw=break case cd continue do done \
	elif else esac eval exec exit export \
	fi for if in then while until \
	read readonly set shift test trap umask wait:

SICStus:\
	:bb=\:-:be=.$:cb=%:ce=$:ab=/*:ae=*/:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=":se=\e":lb=':le=\e':\
	:kw=abolish abort absolute_file_name ancestors arg assert\
	asserta assertz at_end_of_stream at_end_of_line atom\
	atom_chars atomic bagof block break call callable call_residue\
	character_count clause close compare compile compound consult\
	copy_term current_atom current_host current_input current_input\
	current_key current_module current_op current_output\
	current_predicate current_stream debug debugging depth dif\
	display dynamic ensure_loaded erase error_exception expand_term\
	fail false fcompile fileerrors findall float flush_output\
	foreign foreign_file format freeze frozen functor\
	garbage_collect gc get get0 ground halt help if\
	incore initialization instance integer is keysort leash\
	length library_directory line_count line_position listing\
	load load_foreign_files maxdepth meta_predicate mod\
	module mode multifile name nl nodebug nofileerrors nogc nonvar\
	nospy nospyall notrace number number_chars numbervars\
	on_exception op open open_null_stream otherwise peek_char\
	phrase plsys portray portray_clause portray_message\
	predicate_property prepare_foreign_files print print_message\
	profile_data profile_reset prolog_flag prompt put public\
	raise_exception read read_term reconsult recorda recorded\
	recordz reinitialize repeat require restore retract retractall\
	save save_program see seeing seek seen set_input set_output\
	set_stream_position setarg setof simple skip skip_line socket\
	socket_accept socket_bind socket_connect socket_interrupt\
	socket_listen socket_select sort source_file spy spypoint\
	statistics stream_code stream_position subgoal_of subsumes_chk\
	tab tell telling term_expansion term_hash term_subsume time_out\
	told trace true ttyflush ttyget ttyget0 ttynl ttyput ttyskip\
	ttytab undo unix unknown unknown_predicate_handler use_module\
	user_help var version when write write_canonical write_term\
	writeq:

src:\
	:kw=:

# Very incomplete...
SQL:\
	:oc:ab=/*:ae=*/:\
	:sb=':se=':lb=":le=":\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw=select where from as group by order asc desc union insert values\
	delete into create table integer varchar primary key not null float\
	default:

# A.Bednarz@kfa-juelich.de
# Received Jan 97
Tcl/Tk|tcl|tk:\
        :bb={:be=}:cb=\d#:ce=$:sb=":se=\e":lb=':\
        :zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
        :le=\e':tl:pb=\d?proc\d\p\d{:id=-$_.,:\
        :kw=after append array auto_execok auto_load auto_mkindex \
auto_reset bell bind bindtags break button canvas case catch cd \
checkbutton clipboard close concat continue destroy entry eof error \
eval exec exit expr file fileevent flush focus for foreach format \
frame gets glob global grab history if image incr info join label \
lappend lindex linsert list listbox llength lower lrange lreplace \
lsearch lsort menu menubutton message open option pack pid place \
proc puts pwd radiobutton raise read regexp regsub rename return \
scale scan scrollbar seek selection send set source split string \
subst switch tell text time tk tkButtonDown tkButtonEnter tkButtonInvoke \
tkButtonLeave tkButtonUp tkCancelRepeat tkCheckRadioInvoke tkEntryAutoScan \
tkEntryBackspace tkEntryButton1 tkEntryClipboardKeysyms tkEntryInsert \
tkEntryKeySelect tkEntryMouseSelect tkEntrySeeInsert tkEntrySetCursor \
tkEntryTranspose tkFirstMenu tkListboxAutoScan tkListboxBeginExtend \
tkListboxBeginSelect tkListboxBeginToggle tkListboxCancel tkListboxDataExtend \
tkListboxExtendUpDown tkListboxMotion tkListboxSelectAll tkListboxUpDown \
tkMbButtonUp tkMbEnter tkMbLeave tkMbMotion tkMbPost tkMenuButtonDown \
tkMenuEscape tkMenuFind tkMenuFindName tkMenuFirstEntry tkMenuInvoke \
tkMenuLeave tkMenuLeftRight tkMenuMotion tkMenuNextEntry tkMenuUnpost \
tkPostOverPoint tkSaveGrabInfo tkScaleActivate tkScaleButton2Down \
tkScaleButtonDown tkScaleControlPress tkScaleDrag tkScaleEndDrag \
tkScaleIncrement tkScreenChanged tkScrollButton2Down tkScrollButtonDown \
tkScrollButtonUp tkScrollByPages tkScrollByUnits tkScrollDrag \
tkScrollEndDrag tkScrollSelect tkScrollStartDrag tkScrollToPos \
tkScrollTopBottom tkTextAutoScan tkTextButton1 tkTextClipboardKeysyms \
tkTextInsert tkTextKeyExtend tkTextKeySelect tkTextNextPara tkTextPrevPara \
tkTextResetAnchor tkTextScrollPages tkTextSelectTo tkTextSetCursor \
tkTextTranspose tkTextUpDownLine tkTraverseToMenu tkTraverseWithinMenu \
tk_popup tkwait toplevel trace unknown unset update uplevel upvar while winfo wm:


# JL - Added visbasic 6 Aug 1996. Note: this is not complete!
VisualBasic|vbasic:\
	:pb=^\d?*?\d?\p\d?\(\a?\)(\d|{):bb={:be=}:\
	:cb=':ce=$:sb=":se=":\
	:le=\e':tl:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:kw= Access And As Asc Boolean Byte Call Case Chr Close Currency Debug \
	Declare Dim Do Double Else ElseIf End Exit False For Format Function \
	Get If Input Integer Left Len Line Long Loop Lset Ltrim Mid Mod Next \
	Not Object On Open Or Output Print Private Pset Public Put Read Right \
	Rset Rtrim Select Single Static Str String Sub Then To Trim True Type \
	Until Val Variant Wend While :

VMSasm:\
	:pb=^\d?.entry\d\p(\d|,|$|;):\
	:oc:\
	:cb=;:ce=$:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:sb=(.ident|.asci(x|c|d|i|z))\d:se=$:\
	:kw=.address .align .ascix .ascic .ascid .ascii .asciz \
	.blkx .byte .cross .debug .default .d_floating .double \
	.disable .enable .end .endc .endm .endr .entry .error \
	.even .external .f_floating .float .g_floating .ident .if \
	.if_x .iff .irp .irpc .library .link .list .long .macro \
	.mask .mcall .mdelete .mexit .narg .nchr .nlist .nocross \
	.noshow .ntype .octa .odd .opdef .packed .page .print \
	.psect .quad .refn .repeat .restore_psect .save_psect \
	.show .signed_byte .signed_word .subtitle .title .transfer \
	.warn .weak .word:

yacc|y:\
	:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
	:cb=/*:ce=*/:sb=":se=\e":lb=':le=\e':tl:\
	:kw=%{ %} %% %union %token %type\
	#else #endif #if #ifdef #ifndef #include #undef #define else endif\
	if ifdef ifndef include undef:


EndOfLanguageDefinitions:
#
# The following entries are NOT language definitions,
# but configuration specifications for the LGrind program
#
BeginOfConfigurationItems:

# a list of extensions and the language that belongs to them
# these can be wrong or too system specific
# recommendations appreciated
extensions:\
	:c=c:\
	:C=c++:cpp=c++:cc=c++:h=c++:\
	:pas=pascal:\
	:ads=ada:adb=ada:\
	:tcl=tcl/tk:\
	:y=yacc:\
	:tex=latex:\
	:java=java:\
	:mod=modula2:\
	:bas=visualbasic:\
	:ps=postscript:eps=postscript:pfa=postscript:\
	:pro=prolog:\
	:scm=scheme:\
	:m=matlab:\
	:ml=sml/nj:\
	:f=f77:F=f77:for=f77:\
	:l=lex:\
	:k=kimwitu++:\
	:py=python:

# character substitution table
chartab:\
:84="a:94="o:81="u:e1="s:8e="A:99="O:9a="U:e0=$\\alpha$:

# preamble to put at the beginning of a stand-alone listing
firstpreamble:\
\\documentclass[a4paper,twoside]{article}\n\
\\usepackage[procnames,noindent]{lgrind}\n\
\\usepackage{fancyhdr,a4wide}\n\
\\usepackage{german}\n\
\\usepackage{makeidx}\n\
\\pagestyle{fancy}\n\n\
\\makeindex\n\n\
\\begin{document}\n

# postamble to put at the very end of a stand-alone listing
postamble:\
\\printindex\n\
\\end{document}

# preamble to put before each file in a stand-alone listing
filepreamble:\
\\renewcommand{\\footrulewidth}{0.4pt}\n\
\\fancyhead[C]{\\lgrindhead}\n\
\\fancyhead[LO,RE]{\\lgrindfilesize~Bytes\\\\\\lgrindmodtime}\n\
\\fancyhead[RO,LE]{\\bfseries \\lgrindfilename\\\\\
\\lgrindmodday.\\lgrindmodmonth.\\lgrindmodyear}\n\
\\fancyfoot[C]{\\bfseries\\thepage}\n\
\\setlength{\\headheight}{24pt}\n

# preferences for line numbering, changing fonts etc.
# (comes after "\begin{lgrind}")
configuration: