diff options
| -rw-r--r-- | Makefile | 10 | ||||
| -rw-r--r-- | lgrindef | 849 | 
2 files changed, 854 insertions, 5 deletions
| @@ -69,15 +69,15 @@ PRINT =	\  	console.c\  	string.c\ +# make a print, but the resulting xv6.ind need some editing  print: $(PRINT) -	//~/src/lgrind/source/lgrind -d ~/src/lgrind/lgrindef $(PRINT) > xv6.tex -	lgrind $(PRINT) > xv6.tex +	lgrind -d ./lgrindef $(PRINT) > xv6.tex  +	latex xv6.tex +	makeindex xv6.idx  	latex xv6.tex  	dvips -o xv61.ps xv6.dvi  	psnup -2 xv61.ps > xv6.ps  	rm -f xv61.ps -//	a2ps --line-numbers=1 -M Letter $(PRINT) -o xv6.ps -//	a2ps --line-numbers=1 -M Letter $(PRINT) --toc -atoc -o xv6toc.ps  vectors.S : vectors.pl  	perl vectors.pl > vectors.S @@ -137,7 +137,7 @@ fs.img : mkfs userfs usertests echo cat readme init sh ls mkdir rm fstests  -include *.d  clean :  -	rm -f *.ps *.tex *.dvi *.idx *.aux .log \ +	rm -f *.ps *.tex *.dvi *.idx *.aux *.log *.ind *.ilg \  	*.o *.d *.asm vectors.S parport.out \  	bootblock kernel xv6.img user1 userfs usertests \  	fs.img mkfs echo init fstests diff --git a/lgrindef b/lgrindef new file mode 100644 index 0000000..cfe979b --- /dev/null +++ b/lgrindef @@ -0,0 +1,849 @@ +# Database of program templates for lgrind +# $Id: lgrindef,v 1.1 2006/09/03 14:38:10 kaashoek 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[twoside]{article}\n\ +\\usepackage[procnames,noindent]{lgrind}\n\ +\\usepackage{fancyhdr}\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: + | 
