148 lines
1.9 KiB
Plaintext
148 lines
1.9 KiB
Plaintext
|
struct js_keyword {
|
||
|
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;
|
||
|
}
|