148 lines
1.9 KiB
Plaintext
148 lines
1.9 KiB
Plaintext
struct js_keyword {
|
|
const char * name;
|
|
int token;
|
|
}
|
|
%%
|
|
abstract, 1
|
|
boolean, 2
|
|
break, 3
|
|
byte, 4
|
|
case, 5
|
|
catch, 6
|
|
char, 7
|
|
class, 8
|
|
const, 9
|
|
continue, 10
|
|
default, 11
|
|
do, 12
|
|
double, 13
|
|
else, 14
|
|
extends, 15
|
|
false, 16
|
|
final, 17
|
|
finally, 18
|
|
float, 19
|
|
for, 20
|
|
function, 21
|
|
goto, 22
|
|
if, 23
|
|
implements, 24
|
|
import, 25
|
|
in, 26
|
|
instanceof, 27
|
|
int, 28
|
|
interface, 29
|
|
long, 30
|
|
native, 31
|
|
new, 32
|
|
null, 33
|
|
package, 34
|
|
private, 35
|
|
protected, 36
|
|
public, 37
|
|
return, 38
|
|
short, 39
|
|
static, 40
|
|
super, 41
|
|
switch, 42
|
|
synchronized, 43
|
|
this, 44
|
|
throw, 45
|
|
throws, 46
|
|
transient, 47
|
|
true, 48
|
|
try, 49
|
|
var, 50
|
|
void, 51
|
|
while, 52
|
|
with, 53
|
|
%%
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#if defined(__STDC__) || defined(__cplusplus)
|
|
#define CONST const
|
|
#else
|
|
#define CONST
|
|
#endif
|
|
static CONST char* testdata[] = {
|
|
"bogus",
|
|
"abstract",
|
|
"boolean",
|
|
"break",
|
|
"byte",
|
|
"case",
|
|
"catch",
|
|
"char",
|
|
"class",
|
|
"const",
|
|
"continue",
|
|
"default",
|
|
"do",
|
|
"double",
|
|
"else",
|
|
"extends",
|
|
"false",
|
|
"final",
|
|
"finally",
|
|
"float",
|
|
"for",
|
|
"function",
|
|
"goto",
|
|
"if",
|
|
"implements",
|
|
"import",
|
|
"in",
|
|
"instanceof",
|
|
"int",
|
|
"interface",
|
|
"long",
|
|
"native",
|
|
"new",
|
|
"null",
|
|
"package",
|
|
"private",
|
|
"protected",
|
|
"public",
|
|
"return",
|
|
"short",
|
|
"static",
|
|
"super",
|
|
"switch",
|
|
"synchronized",
|
|
"this",
|
|
"throw",
|
|
"throws",
|
|
"transient",
|
|
"true",
|
|
"try",
|
|
"var",
|
|
"void",
|
|
"while",
|
|
"with"
|
|
};
|
|
int main ()
|
|
{
|
|
int i;
|
|
for (i = 0; i < sizeof(testdata)/sizeof(testdata[0]); i++)
|
|
{
|
|
#ifdef CPLUSPLUS_TEST
|
|
CONST struct js_keyword * resword = Perfect_Hash::in_word_set(testdata[i],strlen(testdata[i]));
|
|
#else
|
|
CONST struct js_keyword * resword = in_word_set(testdata[i],strlen(testdata[i]));
|
|
#endif
|
|
if (i > 0)
|
|
{
|
|
if (!resword)
|
|
exit (1);
|
|
if (strcmp(testdata[i],resword->name))
|
|
exit (1);
|
|
}
|
|
else
|
|
{
|
|
if (resword)
|
|
exit (1);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|