17 lines
425 B
Text
Executable file
17 lines
425 B
Text
Executable file
dnl This probably will not run on any m4 that cannot
|
|
dnl handle char constants in eval.
|
|
dnl
|
|
changequote(<,>) define(HASHVAL,99) dnl
|
|
define(hash,<eval(str(substr($1,1),0)%HASHVAL)>) dnl
|
|
define(str,
|
|
<ifelse($1,",$2,
|
|
<str(substr(<$1>,1),<eval($2+'substr($1,0,1)')>)>)
|
|
>) dnl
|
|
define(KEYWORD,<$1,hash($1),>) dnl
|
|
define(TSTART,
|
|
<struct prehash {
|
|
char *keyword;
|
|
int hashval;
|
|
} keytab[] = {>) dnl
|
|
define(TEND,< "",0
|
|
};>) dnl
|