1999-09-29 03:50:35 +02:00
|
|
|
%{
|
|
|
|
|
/* Command-line: gperf -o -i 1 -C -k 1-3,$ -L C -H keyword_hash -N check_identifier -tT lexor_keyword.gperf */
|
|
|
|
|
|
2001-07-25 05:10:48 +02:00
|
|
|
#include "config.h"
|
1999-09-29 03:50:35 +02:00
|
|
|
#include "parse_misc.h"
|
|
|
|
|
#include "parse.h"
|
|
|
|
|
#include <string.h>
|
2000-03-12 18:09:40 +01:00
|
|
|
#include "lexor_keyword.h"
|
2008-05-01 07:07:09 +02:00
|
|
|
#include "compiler.h"
|
1999-09-29 03:50:35 +02:00
|
|
|
|
|
|
|
|
%}
|
2008-05-01 07:07:09 +02:00
|
|
|
struct lexor_keyword { const char*name; int mask; int tokenType; };
|
1999-09-29 03:50:35 +02:00
|
|
|
%%
|
2008-05-04 06:54:42 +02:00
|
|
|
abs, GN_KEYWORDS_VAMS_2_3, K_abs
|
2008-05-10 19:37:33 +02:00
|
|
|
abstol, GN_KEYWORDS_VAMS_2_3, K_abstol
|
|
|
|
|
access, GN_KEYWORDS_VAMS_2_3, K_access
|
2008-05-04 03:05:51 +02:00
|
|
|
acos, GN_KEYWORDS_VAMS_2_3, K_acos
|
|
|
|
|
acosh, GN_KEYWORDS_VAMS_2_3, K_acosh
|
2008-05-01 07:07:09 +02:00
|
|
|
always, GN_KEYWORDS_1364_1995, K_always
|
2009-01-10 10:02:09 +01:00
|
|
|
always_comb, GN_KEYWORDS_1800_2005, K_always_comb
|
|
|
|
|
always_ff, GN_KEYWORDS_1800_2005, K_always_ff
|
|
|
|
|
always_latch, GN_KEYWORDS_1800_2005, K_always_latch
|
2008-05-10 19:37:33 +02:00
|
|
|
analog, GN_KEYWORDS_VAMS_2_3, K_analog
|
2008-05-01 07:07:09 +02:00
|
|
|
and, GN_KEYWORDS_1364_1995, K_and
|
2008-05-04 03:05:51 +02:00
|
|
|
asin, GN_KEYWORDS_VAMS_2_3, K_asin
|
|
|
|
|
asinh, GN_KEYWORDS_VAMS_2_3, K_asinh
|
2009-01-10 10:02:09 +01:00
|
|
|
assert, GN_KEYWORDS_1800_2005, K_assert
|
2008-05-01 07:07:09 +02:00
|
|
|
assign, GN_KEYWORDS_1364_1995, K_assign
|
2008-05-04 03:05:51 +02:00
|
|
|
atan, GN_KEYWORDS_VAMS_2_3, K_atan
|
|
|
|
|
atan2, GN_KEYWORDS_VAMS_2_3, K_atan2
|
|
|
|
|
atanh, GN_KEYWORDS_VAMS_2_3, K_atanh
|
2008-08-13 22:58:49 +02:00
|
|
|
automatic, GN_KEYWORDS_1364_2001, K_automatic
|
2008-05-01 07:07:09 +02:00
|
|
|
begin, GN_KEYWORDS_1364_1995, K_begin
|
|
|
|
|
bool, GN_KEYWORDS_ICARUS, K_bool
|
|
|
|
|
buf, GN_KEYWORDS_1364_1995, K_buf
|
|
|
|
|
bufif0, GN_KEYWORDS_1364_1995, K_bufif0
|
|
|
|
|
bufif1, GN_KEYWORDS_1364_1995, K_bufif1
|
|
|
|
|
case, GN_KEYWORDS_1364_1995, K_case
|
|
|
|
|
casex, GN_KEYWORDS_1364_1995, K_casex
|
|
|
|
|
casez, GN_KEYWORDS_1364_1995, K_casez
|
2008-05-04 03:05:51 +02:00
|
|
|
ceil, GN_KEYWORDS_VAMS_2_3, K_ceil
|
2008-05-01 07:07:09 +02:00
|
|
|
cmos, GN_KEYWORDS_1364_1995, K_cmos
|
2008-05-10 19:37:33 +02:00
|
|
|
continuous, GN_KEYWORDS_VAMS_2_3, K_continuous
|
2008-05-04 03:05:51 +02:00
|
|
|
cos, GN_KEYWORDS_VAMS_2_3, K_cos
|
|
|
|
|
cosh, GN_KEYWORDS_VAMS_2_3, K_cosh
|
2008-05-10 19:37:33 +02:00
|
|
|
ddt_nature, GN_KEYWORDS_VAMS_2_3, K_ddt_nature
|
2008-05-01 07:07:09 +02:00
|
|
|
deassign, GN_KEYWORDS_1364_1995, K_deassign
|
|
|
|
|
default, GN_KEYWORDS_1364_1995, K_default
|
|
|
|
|
defparam, GN_KEYWORDS_1364_1995, K_defparam
|
|
|
|
|
disable, GN_KEYWORDS_1364_1995, K_disable
|
2008-05-10 19:37:33 +02:00
|
|
|
discipline, GN_KEYWORDS_VAMS_2_3, K_discipline
|
|
|
|
|
discrete, GN_KEYWORDS_VAMS_2_3, K_discrete
|
|
|
|
|
domain, GN_KEYWORDS_VAMS_2_3, K_domain
|
2008-05-01 07:07:09 +02:00
|
|
|
edge, GN_KEYWORDS_1364_1995, K_edge
|
|
|
|
|
else, GN_KEYWORDS_1364_1995, K_else
|
|
|
|
|
end, GN_KEYWORDS_1364_1995, K_end
|
|
|
|
|
endcase, GN_KEYWORDS_1364_1995, K_endcase
|
2008-05-10 19:37:33 +02:00
|
|
|
enddiscipline, GN_KEYWORDS_VAMS_2_3, K_enddiscipline
|
2008-05-01 07:07:09 +02:00
|
|
|
endfunction, GN_KEYWORDS_1364_1995, K_endfunction
|
|
|
|
|
endgenerate, GN_KEYWORDS_1364_1995, K_endgenerate
|
|
|
|
|
endmodule, GN_KEYWORDS_1364_1995, K_endmodule
|
2008-05-10 19:37:33 +02:00
|
|
|
endnature, GN_KEYWORDS_VAMS_2_3, K_endnature
|
2008-05-01 07:07:09 +02:00
|
|
|
endprimitive, GN_KEYWORDS_1364_1995, K_endprimitive
|
|
|
|
|
endspecify, GN_KEYWORDS_1364_1995, K_endspecify
|
|
|
|
|
endtable, GN_KEYWORDS_1364_1995, K_endtable
|
|
|
|
|
endtask, GN_KEYWORDS_1364_1995, K_endtask
|
|
|
|
|
event, GN_KEYWORDS_1364_1995, K_event
|
2008-05-10 19:37:33 +02:00
|
|
|
exclude, GN_KEYWORDS_VAMS_2_3, K_exclude
|
2008-05-04 03:05:51 +02:00
|
|
|
exp, GN_KEYWORDS_VAMS_2_3, K_exp
|
|
|
|
|
floor, GN_KEYWORDS_VAMS_2_3, K_floor
|
2008-05-10 19:37:33 +02:00
|
|
|
flow, GN_KEYWORDS_VAMS_2_3, K_flow
|
2008-05-01 07:07:09 +02:00
|
|
|
for, GN_KEYWORDS_1364_1995, K_for
|
|
|
|
|
force, GN_KEYWORDS_1364_1995, K_force
|
|
|
|
|
forever, GN_KEYWORDS_1364_1995, K_forever
|
|
|
|
|
fork, GN_KEYWORDS_1364_1995, K_fork
|
2008-05-10 19:37:33 +02:00
|
|
|
from, GN_KEYWORDS_VAMS_2_3, K_from
|
2008-05-01 07:07:09 +02:00
|
|
|
function, GN_KEYWORDS_1364_1995, K_function
|
|
|
|
|
generate, GN_KEYWORDS_1364_2001, K_generate
|
|
|
|
|
genvar, GN_KEYWORDS_1364_2001, K_genvar
|
2008-05-10 19:37:33 +02:00
|
|
|
ground, GN_KEYWORDS_VAMS_2_3, K_ground
|
2008-05-01 07:07:09 +02:00
|
|
|
highz0, GN_KEYWORDS_1364_1995, K_highz0
|
|
|
|
|
highz1, GN_KEYWORDS_1364_1995, K_highz1
|
2008-05-04 03:05:51 +02:00
|
|
|
hypot, GN_KEYWORDS_VAMS_2_3, K_hypot
|
2008-05-10 19:37:33 +02:00
|
|
|
idt_nature, GN_KEYWORDS_VAMS_2_3, K_idt_nature
|
2008-05-01 07:07:09 +02:00
|
|
|
if, GN_KEYWORDS_1364_1995, K_if
|
|
|
|
|
ifnone, GN_KEYWORDS_1364_1995, K_ifnone
|
2008-05-13 06:26:38 +02:00
|
|
|
inf, GN_KEYWORDS_VAMS_2_3, K_inf
|
2008-05-01 07:07:09 +02:00
|
|
|
initial, GN_KEYWORDS_1364_1995, K_initial
|
|
|
|
|
inout, GN_KEYWORDS_1364_1995, K_inout
|
|
|
|
|
input, GN_KEYWORDS_1364_1995, K_input
|
|
|
|
|
integer, GN_KEYWORDS_1364_1995, K_integer
|
|
|
|
|
join, GN_KEYWORDS_1364_1995, K_join
|
|
|
|
|
large, GN_KEYWORDS_1364_1995, K_large
|
2008-05-04 03:05:51 +02:00
|
|
|
ln, GN_KEYWORDS_VAMS_2_3, K_ln
|
2008-05-01 07:07:09 +02:00
|
|
|
localparam, GN_KEYWORDS_1364_2001, K_localparam
|
2008-05-04 03:05:51 +02:00
|
|
|
log, GN_KEYWORDS_VAMS_2_3, K_log
|
2008-05-01 07:07:09 +02:00
|
|
|
logic, GN_KEYWORDS_ICARUS, K_logic
|
|
|
|
|
macromodule, GN_KEYWORDS_1364_1995, K_macromodule
|
2008-05-04 06:54:42 +02:00
|
|
|
max, GN_KEYWORDS_VAMS_2_3, K_max
|
2008-05-01 07:07:09 +02:00
|
|
|
medium, GN_KEYWORDS_1364_1995, K_medium
|
2008-05-04 06:54:42 +02:00
|
|
|
min, GN_KEYWORDS_VAMS_2_3, K_min
|
2008-05-01 07:07:09 +02:00
|
|
|
module, GN_KEYWORDS_1364_1995, K_module
|
|
|
|
|
nand, GN_KEYWORDS_1364_1995, K_nand
|
2008-05-10 19:37:33 +02:00
|
|
|
nature, GN_KEYWORDS_VAMS_2_3, K_nature
|
2008-05-01 07:07:09 +02:00
|
|
|
negedge, GN_KEYWORDS_1364_1995, K_negedge
|
|
|
|
|
nmos, GN_KEYWORDS_1364_1995, K_nmos
|
|
|
|
|
nor, GN_KEYWORDS_1364_1995, K_nor
|
|
|
|
|
not, GN_KEYWORDS_1364_1995, K_not
|
|
|
|
|
notif0, GN_KEYWORDS_1364_1995, K_notif0
|
|
|
|
|
notif1, GN_KEYWORDS_1364_1995, K_notif1
|
|
|
|
|
or, GN_KEYWORDS_1364_1995, K_or
|
|
|
|
|
output, GN_KEYWORDS_1364_1995, K_output
|
|
|
|
|
parameter, GN_KEYWORDS_1364_1995, K_parameter
|
|
|
|
|
pmos, GN_KEYWORDS_1364_1995, K_pmos
|
|
|
|
|
posedge, GN_KEYWORDS_1364_1995, K_posedge
|
2008-05-10 19:37:33 +02:00
|
|
|
potential, GN_KEYWORDS_VAMS_2_3, K_potential
|
2008-05-04 03:05:51 +02:00
|
|
|
pow, GN_KEYWORDS_VAMS_2_3, K_pow
|
2008-05-01 07:07:09 +02:00
|
|
|
primitive, GN_KEYWORDS_1364_1995, K_primitive
|
|
|
|
|
pull0, GN_KEYWORDS_1364_1995, K_pull0
|
|
|
|
|
pull1, GN_KEYWORDS_1364_1995, K_pull1
|
|
|
|
|
pulldown, GN_KEYWORDS_1364_1995, K_pulldown
|
|
|
|
|
pullup, GN_KEYWORDS_1364_1995, K_pullup
|
|
|
|
|
rcmos, GN_KEYWORDS_1364_1995, K_rcmos
|
|
|
|
|
real, GN_KEYWORDS_1364_1995, K_real
|
|
|
|
|
realtime, GN_KEYWORDS_1364_1995, K_realtime
|
|
|
|
|
reg, GN_KEYWORDS_1364_1995, K_reg
|
|
|
|
|
release, GN_KEYWORDS_1364_1995, K_release
|
|
|
|
|
repeat, GN_KEYWORDS_1364_1995, K_repeat
|
|
|
|
|
rnmos, GN_KEYWORDS_1364_1995, K_rnmos
|
|
|
|
|
rpmos, GN_KEYWORDS_1364_1995, K_rpmos
|
|
|
|
|
rtran, GN_KEYWORDS_1364_1995, K_rtran
|
|
|
|
|
rtranif0, GN_KEYWORDS_1364_1995, K_rtranif0
|
|
|
|
|
rtranif1, GN_KEYWORDS_1364_1995, K_rtranif1
|
|
|
|
|
scalared, GN_KEYWORDS_1364_1995, K_scalared
|
|
|
|
|
signed, GN_KEYWORDS_1364_2001, K_signed
|
2008-05-04 03:05:51 +02:00
|
|
|
sin, GN_KEYWORDS_VAMS_2_3, K_sin
|
|
|
|
|
sinh, GN_KEYWORDS_VAMS_2_3, K_sinh
|
2008-05-01 07:07:09 +02:00
|
|
|
small, GN_KEYWORDS_1364_1995, K_small
|
|
|
|
|
specify, GN_KEYWORDS_1364_1995, K_specify
|
|
|
|
|
specparam, GN_KEYWORDS_1364_1995, K_specparam
|
2008-05-04 03:05:51 +02:00
|
|
|
sqrt, GN_KEYWORDS_VAMS_2_3, K_sqrt
|
2008-05-10 19:37:33 +02:00
|
|
|
string, GN_KEYWORDS_VAMS_2_3, K_string
|
2008-05-01 07:07:09 +02:00
|
|
|
strong0, GN_KEYWORDS_1364_1995, K_strong0
|
|
|
|
|
strong1, GN_KEYWORDS_1364_1995, K_strong1
|
|
|
|
|
supply0, GN_KEYWORDS_1364_1995, K_supply0
|
|
|
|
|
supply1, GN_KEYWORDS_1364_1995, K_supply1
|
|
|
|
|
table, GN_KEYWORDS_1364_1995, K_table
|
2008-05-04 03:05:51 +02:00
|
|
|
tan, GN_KEYWORDS_VAMS_2_3, K_tan
|
|
|
|
|
tanh, GN_KEYWORDS_VAMS_2_3, K_tanh
|
2008-05-01 07:07:09 +02:00
|
|
|
task, GN_KEYWORDS_1364_1995, K_task
|
|
|
|
|
time, GN_KEYWORDS_1364_1995, K_time
|
|
|
|
|
tran, GN_KEYWORDS_1364_1995, K_tran
|
|
|
|
|
tranif0, GN_KEYWORDS_1364_1995, K_tranif0
|
|
|
|
|
tranif1, GN_KEYWORDS_1364_1995, K_tranif1
|
|
|
|
|
tri, GN_KEYWORDS_1364_1995, K_tri
|
|
|
|
|
tri0, GN_KEYWORDS_1364_1995, K_tri0
|
|
|
|
|
tri1, GN_KEYWORDS_1364_1995, K_tri1
|
|
|
|
|
triand, GN_KEYWORDS_1364_1995, K_triand
|
|
|
|
|
trior, GN_KEYWORDS_1364_1995, K_trior
|
|
|
|
|
trireg, GN_KEYWORDS_1364_1995, K_trireg
|
2008-05-10 19:37:33 +02:00
|
|
|
units, GN_KEYWORDS_VAMS_2_3, K_units
|
2008-05-01 07:07:09 +02:00
|
|
|
vectored, GN_KEYWORDS_1364_1995, K_vectored
|
|
|
|
|
wait, GN_KEYWORDS_1364_1995, K_wait
|
|
|
|
|
wand, GN_KEYWORDS_1364_1995, K_wand
|
|
|
|
|
weak0, GN_KEYWORDS_1364_1995, K_weak0
|
|
|
|
|
weak1, GN_KEYWORDS_1364_1995, K_weak1
|
|
|
|
|
while, GN_KEYWORDS_1364_1995, K_while
|
|
|
|
|
wire, GN_KEYWORDS_1364_1995, K_wire
|
|
|
|
|
wone, GN_KEYWORDS_1364_1995, K_wone
|
|
|
|
|
wor, GN_KEYWORDS_1364_1995, K_wor
|
|
|
|
|
xnor, GN_KEYWORDS_1364_1995, K_xnor
|
|
|
|
|
xor, GN_KEYWORDS_1364_1995, K_xor
|
2000-03-12 18:09:40 +01:00
|
|
|
%%
|
|
|
|
|
|
2008-05-01 07:07:09 +02:00
|
|
|
int lexor_keyword_mask = 0;
|
|
|
|
|
|
2000-03-12 18:09:40 +01:00
|
|
|
int lexor_keyword_code(const char*str, unsigned nstr)
|
|
|
|
|
{
|
|
|
|
|
const struct lexor_keyword*rc = check_identifier(str, nstr);
|
|
|
|
|
if (rc == 0)
|
|
|
|
|
return IDENTIFIER;
|
2008-05-03 00:29:09 +02:00
|
|
|
else if ((rc->mask & lexor_keyword_mask) == 0)
|
|
|
|
|
return IDENTIFIER;
|
2000-03-12 18:09:40 +01:00
|
|
|
else
|
|
|
|
|
return rc->tokenType;
|
|
|
|
|
}
|