%{
#ifndef lint
static char rcsid[] = "$Header: bass.l,v 0.0 89/02/14 11:57:35 on Rel $";
#endif
#include "pps.h"
#include <ctype.h>

int nbrace;
%}
letter	[A-Za-z_]
digit	[0-9]
white	[ \t]
%Start COMMENT STRING1 STRING2 KEYWORD
%%

<INITIAL>{letter}({letter}|{digit})*	{
			int kw = iskw(yytext);
			if (kw)
				begin(KEYWORD);
			ECHO;
			if (kw)
				begin(INITIAL);
		}
<INITIAL>\"	{ begin(STRING1); ECHO; }
<INITIAL>\'	{ begin(STRING2); ECHO; }
<INITIAL>\%	{ begin(COMMENT); ECHO; }
<STRING1>\\.	{ ECHO; }
<STRING2>\\.	{ ECHO; }
<STRING1>\"	{ ECHO; begin(INITIAL); }
<STRING2>\'	{ ECHO; begin(INITIAL); }
[\t\f]+		{ space(yytext); }
[\n]+		{ begin(INITIAL); space(yytext); }
.		{ ECHO; }
%%
/*
 * This should better be sorted by frequency.
 */
char *keywords[] = {
	"aschar",
	"asint",
	"begin",
	"char",
	"else",
	"end",
	"if",
	"int",
	"procedure",
	"program",
	"readchar",
	"readint",
	"skip",
	"then",
	"writechar",
	"writeint",
	"writestring",
	"array",
	"of",
	"length",
	"repeat",
	"record",
	"until",
	"val",
	NULL
};
