Add all the SystemVerilog (1800-2005) keywords.
This patch adds the SystemVerilog keywords to Icarus. This allows use to easily verify that out plain Verilog does not contain any SystemVerilog keywords. The keywords are not parsed in any way. When parsing a Verilog file using -gsystem-verilog any identifier that is a keyword will cause a parse error. It is the users responsibility to figure out the problem since bison does not give nice error message when it finds a keyword instead of an identifier.
This commit is contained in:
parent
14b2037ce4
commit
511a274b41
|
|
@ -16,6 +16,7 @@ abstol, GN_KEYWORDS_VAMS_2_3, K_abstol
|
|||
access, GN_KEYWORDS_VAMS_2_3, K_access
|
||||
acos, GN_KEYWORDS_VAMS_2_3, K_acos
|
||||
acosh, GN_KEYWORDS_VAMS_2_3, K_acosh
|
||||
alias, GN_KEYWORDS_1800_2005, K_alias
|
||||
always, GN_KEYWORDS_1364_1995, K_always
|
||||
always_comb, GN_KEYWORDS_1800_2005, K_always_comb
|
||||
always_ff, GN_KEYWORDS_1800_2005, K_always_ff
|
||||
|
|
@ -26,25 +27,44 @@ asin, GN_KEYWORDS_VAMS_2_3, K_asin
|
|||
asinh, GN_KEYWORDS_VAMS_2_3, K_asinh
|
||||
assert, GN_KEYWORDS_1800_2005, K_assert
|
||||
assign, GN_KEYWORDS_1364_1995, K_assign
|
||||
assume, GN_KEYWORDS_1800_2005, K_assume
|
||||
atan, GN_KEYWORDS_VAMS_2_3, K_atan
|
||||
atan2, GN_KEYWORDS_VAMS_2_3, K_atan2
|
||||
atanh, GN_KEYWORDS_VAMS_2_3, K_atanh
|
||||
automatic, GN_KEYWORDS_1364_2001, K_automatic
|
||||
before, GN_KEYWORDS_1800_2005, K_before
|
||||
begin, GN_KEYWORDS_1364_1995, K_begin
|
||||
bind, GN_KEYWORDS_1800_2005, K_bind
|
||||
bins, GN_KEYWORDS_1800_2005, K_bins
|
||||
binsof, GN_KEYWORDS_1800_2005, K_binsof
|
||||
bit, GN_KEYWORDS_1800_2005, K_bit
|
||||
break, GN_KEYWORDS_1800_2005, K_break
|
||||
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
|
||||
byte, GN_KEYWORDS_1800_2005, K_byte
|
||||
case, GN_KEYWORDS_1364_1995, K_case
|
||||
casex, GN_KEYWORDS_1364_1995, K_casex
|
||||
casez, GN_KEYWORDS_1364_1995, K_casez
|
||||
ceil, GN_KEYWORDS_VAMS_2_3, K_ceil
|
||||
cell, GN_KEYWORDS_1364_2001_CONFIG, K_cell
|
||||
chandle, GN_KEYWORDS_1800_2005, K_chandle
|
||||
class, GN_KEYWORDS_1800_2005, K_class
|
||||
clocking, GN_KEYWORDS_1800_2005, K_clocking
|
||||
cmos, GN_KEYWORDS_1364_1995, K_cmos
|
||||
config, GN_KEYWORDS_1364_2001_CONFIG, K_config
|
||||
const, GN_KEYWORDS_1800_2005, K_const
|
||||
constraint, GN_KEYWORDS_1800_2005, K_constraint
|
||||
context, GN_KEYWORDS_1800_2005, K_context
|
||||
continue, GN_KEYWORDS_1800_2005, K_continue
|
||||
continuous, GN_KEYWORDS_VAMS_2_3, K_continuous
|
||||
cos, GN_KEYWORDS_VAMS_2_3, K_cos
|
||||
cosh, GN_KEYWORDS_VAMS_2_3, K_cosh
|
||||
cover, GN_KEYWORDS_1800_2005, K_cover
|
||||
covergroup, GN_KEYWORDS_1800_2005, K_covergroup
|
||||
coverpoint, GN_KEYWORDS_1800_2005, K_coverpoint
|
||||
cross, GN_KEYWORDS_1800_2005, K_cross
|
||||
ddt_nature, GN_KEYWORDS_VAMS_2_3, K_ddt_nature
|
||||
deassign, GN_KEYWORDS_1364_1995, K_deassign
|
||||
default, GN_KEYWORDS_1364_1995, K_default
|
||||
|
|
@ -53,30 +73,49 @@ design, GN_KEYWORDS_1364_2001_CONFIG, K_design
|
|||
disable, GN_KEYWORDS_1364_1995, K_disable
|
||||
discipline, GN_KEYWORDS_VAMS_2_3, K_discipline
|
||||
discrete, GN_KEYWORDS_VAMS_2_3, K_discrete
|
||||
dist, GN_KEYWORDS_1800_2005, K_dist
|
||||
do, GN_KEYWORDS_1800_2005, K_do
|
||||
domain, GN_KEYWORDS_VAMS_2_3, K_domain
|
||||
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
|
||||
endconfig, GN_KEYWORDS_1364_2001_CONFIG, K_endconfig
|
||||
endclass, GN_KEYWORDS_1800_2005, K_endclass
|
||||
endclocking, GN_KEYWORDS_1800_2005, K_endclocking
|
||||
enddiscipline, GN_KEYWORDS_VAMS_2_3, K_enddiscipline
|
||||
endfunction, GN_KEYWORDS_1364_1995, K_endfunction
|
||||
endgenerate, GN_KEYWORDS_1364_2001, K_endgenerate
|
||||
endgroup, GN_KEYWORDS_1800_2005, K_endgroup
|
||||
endinterface, GN_KEYWORDS_1800_2005, K_endinterface
|
||||
endmodule, GN_KEYWORDS_1364_1995, K_endmodule
|
||||
endnature, GN_KEYWORDS_VAMS_2_3, K_endnature
|
||||
endpackage, GN_KEYWORDS_1800_2005, K_endpackage
|
||||
endprimitive, GN_KEYWORDS_1364_1995, K_endprimitive
|
||||
endprogram, GN_KEYWORDS_1800_2005, K_endprogram
|
||||
endproperty, GN_KEYWORDS_1800_2005, K_endproperty
|
||||
endspecify, GN_KEYWORDS_1364_1995, K_endspecify
|
||||
endsequence, GN_KEYWORDS_1800_2005, K_endsequence
|
||||
endtable, GN_KEYWORDS_1364_1995, K_endtable
|
||||
endtask, GN_KEYWORDS_1364_1995, K_endtask
|
||||
enum, GN_KEYWORDS_1800_2005, K_enum
|
||||
event, GN_KEYWORDS_1364_1995, K_event
|
||||
exclude, GN_KEYWORDS_VAMS_2_3, K_exclude
|
||||
exp, GN_KEYWORDS_VAMS_2_3, K_exp
|
||||
expect, GN_KEYWORDS_1800_2005, K_expect
|
||||
export, GN_KEYWORDS_1800_2005, K_export
|
||||
extends, GN_KEYWORDS_1800_2005, K_extends
|
||||
extern, GN_KEYWORDS_1800_2005, K_extern
|
||||
final, GN_KEYWORDS_1800_2005, K_final
|
||||
first_match, GN_KEYWORDS_1800_2005, K_first_match
|
||||
floor, GN_KEYWORDS_VAMS_2_3, K_floor
|
||||
flow, GN_KEYWORDS_VAMS_2_3, K_flow
|
||||
for, GN_KEYWORDS_1364_1995, K_for
|
||||
foreach, GN_KEYWORDS_1800_2005, K_foreach
|
||||
force, GN_KEYWORDS_1364_1995, K_force
|
||||
forever, GN_KEYWORDS_1364_1995, K_forever
|
||||
fork, GN_KEYWORDS_1364_1995, K_fork
|
||||
forkjoin, GN_KEYWORDS_1800_2005, K_forkjoin
|
||||
from, GN_KEYWORDS_VAMS_2_3, K_from
|
||||
function, GN_KEYWORDS_1364_1995, K_function
|
||||
generate, GN_KEYWORDS_1364_2001, K_generate
|
||||
|
|
@ -87,83 +126,124 @@ highz1, GN_KEYWORDS_1364_1995, K_highz1
|
|||
hypot, GN_KEYWORDS_VAMS_2_3, K_hypot
|
||||
idt_nature, GN_KEYWORDS_VAMS_2_3, K_idt_nature
|
||||
if, GN_KEYWORDS_1364_1995, K_if
|
||||
iff, GN_KEYWORDS_1800_2005, K_iff
|
||||
ifnone, GN_KEYWORDS_1364_1995, K_ifnone
|
||||
ignore_bins, GN_KEYWORDS_1800_2005, K_ignore_bins
|
||||
illegal_bins, GN_KEYWORDS_1800_2005, K_illegal_bins
|
||||
import, GN_KEYWORDS_1800_2005, K_import
|
||||
incdir, GN_KEYWORDS_1364_2001_CONFIG, K_incdir
|
||||
include, GN_KEYWORDS_1364_2001_CONFIG, K_include
|
||||
inf, GN_KEYWORDS_VAMS_2_3, K_inf
|
||||
initial, GN_KEYWORDS_1364_1995, K_initial
|
||||
inout, GN_KEYWORDS_1364_1995, K_inout
|
||||
input, GN_KEYWORDS_1364_1995, K_input
|
||||
inside, GN_KEYWORDS_1800_2005, K_inside
|
||||
instance, GN_KEYWORDS_1364_2001_CONFIG, K_instance
|
||||
int, GN_KEYWORDS_1800_2005, K_int
|
||||
integer, GN_KEYWORDS_1364_1995, K_integer
|
||||
interface, GN_KEYWORDS_1800_2005, K_interface
|
||||
intersect, GN_KEYWORDS_1800_2005, K_intersect
|
||||
join, GN_KEYWORDS_1364_1995, K_join
|
||||
join_any, GN_KEYWORDS_1800_2005, K_join_any
|
||||
join_none, GN_KEYWORDS_1800_2005, K_join_none
|
||||
large, GN_KEYWORDS_1364_1995, K_large
|
||||
liblist, GN_KEYWORDS_1364_2001_CONFIG, K_liblist
|
||||
library, GN_KEYWORDS_1364_2001_CONFIG, K_library
|
||||
ln, GN_KEYWORDS_VAMS_2_3, K_ln
|
||||
local, GN_KEYWORDS_1800_2005, K_local
|
||||
localparam, GN_KEYWORDS_1364_2001, K_localparam
|
||||
log, GN_KEYWORDS_VAMS_2_3, K_log
|
||||
logic, GN_KEYWORDS_ICARUS, K_logic
|
||||
# This is defined by SystemVerilog 1800-2005 and as an Icarus extension.
|
||||
logic, GN_KEYWORDS_1800_2005|GN_KEYWORDS_ICARUS, K_logic
|
||||
longint, GN_KEYWORDS_1800_2005, K_longint
|
||||
macromodule, GN_KEYWORDS_1364_1995, K_macromodule
|
||||
matches, GN_KEYWORDS_1800_2005, K_matches
|
||||
max, GN_KEYWORDS_VAMS_2_3, K_max
|
||||
medium, GN_KEYWORDS_1364_1995, K_medium
|
||||
min, GN_KEYWORDS_VAMS_2_3, K_min
|
||||
modport, GN_KEYWORDS_1800_2005, K_modport
|
||||
module, GN_KEYWORDS_1364_1995, K_module
|
||||
nand, GN_KEYWORDS_1364_1995, K_nand
|
||||
nature, GN_KEYWORDS_VAMS_2_3, K_nature
|
||||
negedge, GN_KEYWORDS_1364_1995, K_negedge
|
||||
new, GN_KEYWORDS_1800_2005, K_new
|
||||
nmos, GN_KEYWORDS_1364_1995, K_nmos
|
||||
nor, GN_KEYWORDS_1364_1995, K_nor
|
||||
noshowcancelled, GN_KEYWORDS_1364_2001, K_noshowcancelled
|
||||
not, GN_KEYWORDS_1364_1995, K_not
|
||||
notif0, GN_KEYWORDS_1364_1995, K_notif0
|
||||
notif1, GN_KEYWORDS_1364_1995, K_notif1
|
||||
null, GN_KEYWORDS_1800_2005, K_null
|
||||
or, GN_KEYWORDS_1364_1995, K_or
|
||||
output, GN_KEYWORDS_1364_1995, K_output
|
||||
package, GN_KEYWORDS_1800_2005, K_package
|
||||
packed, GN_KEYWORDS_1800_2005, K_packed
|
||||
parameter, GN_KEYWORDS_1364_1995, K_parameter
|
||||
pmos, GN_KEYWORDS_1364_1995, K_pmos
|
||||
posedge, GN_KEYWORDS_1364_1995, K_posedge
|
||||
potential, GN_KEYWORDS_VAMS_2_3, K_potential
|
||||
pow, GN_KEYWORDS_VAMS_2_3, K_pow
|
||||
primitive, GN_KEYWORDS_1364_1995, K_primitive
|
||||
priority, GN_KEYWORDS_1800_2005, K_priority
|
||||
program, GN_KEYWORDS_1800_2005, K_program
|
||||
property, GN_KEYWORDS_1800_2005, K_property
|
||||
protected, GN_KEYWORDS_1800_2005, K_protected
|
||||
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
|
||||
pulsestyle_onevent, GN_KEYWORDS_1364_2001, K_pulsestyle_onevent
|
||||
pulsestyle_ondetect, GN_KEYWORDS_1364_2001, K_pulsestyle_ondetect
|
||||
pure, GN_KEYWORDS_1800_2005, K_pure
|
||||
rand, GN_KEYWORDS_1800_2005, K_rand
|
||||
randc, GN_KEYWORDS_1800_2005, K_randc
|
||||
randcase, GN_KEYWORDS_1800_2005, K_randcase
|
||||
randsequence, GN_KEYWORDS_1800_2005, K_randsequence
|
||||
rcmos, GN_KEYWORDS_1364_1995, K_rcmos
|
||||
real, GN_KEYWORDS_1364_1995, K_real
|
||||
realtime, GN_KEYWORDS_1364_1995, K_realtime
|
||||
ref, GN_KEYWORDS_1800_2005, K_ref
|
||||
reg, GN_KEYWORDS_1364_1995, K_reg
|
||||
release, GN_KEYWORDS_1364_1995, K_release
|
||||
repeat, GN_KEYWORDS_1364_1995, K_repeat
|
||||
return, GN_KEYWORDS_1800_2005, K_return
|
||||
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
|
||||
sequence, GN_KEYWORDS_1800_2005, K_sequence
|
||||
shortint, GN_KEYWORDS_1800_2005, K_shortint
|
||||
shortreal, GN_KEYWORDS_1800_2005, K_shortreal
|
||||
showcancelled, GN_KEYWORDS_1364_2001, K_showcancelled
|
||||
signed, GN_KEYWORDS_1364_2001, K_signed
|
||||
sin, GN_KEYWORDS_VAMS_2_3, K_sin
|
||||
sinh, GN_KEYWORDS_VAMS_2_3, K_sinh
|
||||
small, GN_KEYWORDS_1364_1995, K_small
|
||||
solve, GN_KEYWORDS_1800_2005, K_solve
|
||||
specify, GN_KEYWORDS_1364_1995, K_specify
|
||||
specparam, GN_KEYWORDS_1364_1995, K_specparam
|
||||
sqrt, GN_KEYWORDS_VAMS_2_3, K_sqrt
|
||||
string, GN_KEYWORDS_VAMS_2_3, K_string
|
||||
static, GN_KEYWORDS_1800_2005, K_static
|
||||
# This is defined by both SystemVerilog 1800-2005 and Verilog-AMS 2.3
|
||||
string, GN_KEYWORDS_1800_2005|GN_KEYWORDS_VAMS_2_3, K_string
|
||||
strong0, GN_KEYWORDS_1364_1995, K_strong0
|
||||
strong1, GN_KEYWORDS_1364_1995, K_strong1
|
||||
struct, GN_KEYWORDS_1800_2005, K_struct
|
||||
super, GN_KEYWORDS_1800_2005, K_super
|
||||
supply0, GN_KEYWORDS_1364_1995, K_supply0
|
||||
supply1, GN_KEYWORDS_1364_1995, K_supply1
|
||||
table, GN_KEYWORDS_1364_1995, K_table
|
||||
tagged, GN_KEYWORDS_1800_2005, K_tagged
|
||||
tan, GN_KEYWORDS_VAMS_2_3, K_tan
|
||||
tanh, GN_KEYWORDS_VAMS_2_3, K_tanh
|
||||
task, GN_KEYWORDS_1364_1995, K_task
|
||||
this, GN_KEYWORDS_1800_2005, K_this
|
||||
throughout, GN_KEYWORDS_1800_2005, K_throughout
|
||||
time, GN_KEYWORDS_1364_1995, K_time
|
||||
timeprecision, GN_KEYWORDS_1364_1995, K_timeprecision
|
||||
timeunit, GN_KEYWORDS_1364_1995, K_timeunit
|
||||
timeprecision, GN_KEYWORDS_1800_2005, K_timeprecision
|
||||
timeunit, GN_KEYWORDS_1800_2005, K_timeunit
|
||||
tran, GN_KEYWORDS_1364_1995, K_tran
|
||||
tranif0, GN_KEYWORDS_1364_1995, K_tranif0
|
||||
tranif1, GN_KEYWORDS_1364_1995, K_tranif1
|
||||
|
|
@ -173,18 +253,29 @@ 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
|
||||
type, GN_KEYWORDS_1800_2005, K_type
|
||||
typedef, GN_KEYWORDS_1800_2005, K_typedef
|
||||
union, GN_KEYWORDS_1800_2005, K_union
|
||||
unique, GN_KEYWORDS_1800_2005, K_unique
|
||||
units, GN_KEYWORDS_VAMS_2_3, K_units
|
||||
# Reserved for future use!
|
||||
unsigned, GN_KEYWORDS_1364_2001, K_unsigned
|
||||
use, GN_KEYWORDS_1364_2001_CONFIG, K_use
|
||||
uwire, GN_KEYWORDS_1364_2005, K_uwire
|
||||
var, GN_KEYWORDS_1800_2005, K_var
|
||||
vectored, GN_KEYWORDS_1364_1995, K_vectored
|
||||
virtual, GN_KEYWORDS_1800_2005, K_virtual
|
||||
void, GN_KEYWORDS_1800_2005, K_void
|
||||
wait, GN_KEYWORDS_1364_1995, K_wait
|
||||
wait_order, GN_KEYWORDS_1800_2005, K_wait_order
|
||||
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
|
||||
wildcard, GN_KEYWORDS_1800_2005, K_wildcard
|
||||
wire, GN_KEYWORDS_1364_1995, K_wire
|
||||
with, GN_KEYWORDS_1800_2005, K_with
|
||||
within, GN_KEYWORDS_1800_2005, K_within
|
||||
# This is the name originally proposed for uwire and is deprecated!
|
||||
wone, GN_KEYWORDS_1364_2005, K_wone
|
||||
wor, GN_KEYWORDS_1364_1995, K_wor
|
||||
|
|
|
|||
22
parse.y
22
parse.y
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
%{
|
||||
/*
|
||||
* Copyright (c) 1998-2009 Stephen Williams (steve@icarus.com)
|
||||
* Copyright (c) 1998-2010 Stephen Williams (steve@icarus.com)
|
||||
*
|
||||
* This source code is free software; you can redistribute it
|
||||
* and/or modify it in source code form under the terms of the GNU
|
||||
|
|
@ -279,8 +279,24 @@ static PECallFunction*make_call_function(perm_string tn, PExpr*arg1, PExpr*arg2)
|
|||
%token K_wone K_uwire
|
||||
|
||||
/* The new tokens from 1800-2005. */
|
||||
%token K_always_comb K_always_ff K_always_latch K_assert
|
||||
%token K_timeprecision K_timeunit
|
||||
%token K_alias K_always_comb K_always_ff K_always_latch K_assert
|
||||
%token K_assume K_before K_bind K_bins K_binsof K_bit K_break K_byte
|
||||
%token K_chandle K_class K_clocking K_const K_constraint K_context
|
||||
%token K_continue K_cover K_covergroup K_coverpoint K_cross K_dist K_do
|
||||
%token K_endclass K_endclocking K_endgroup K_endinterface K_endpackage
|
||||
%token K_endprogram K_endproperty K_endsequence K_enum K_expect K_export
|
||||
%token K_extends K_extern K_final K_first_match K_foreach K_forkjoin
|
||||
%token K_iff K_ignore_bins K_illegal_bins K_import K_inside K_int
|
||||
/* Icarus already has defined "logic" above! */
|
||||
%token K_interface K_intersect K_join_any K_join_none K_local
|
||||
%token K_longint K_matches K_modport K_new K_null K_package K_packed
|
||||
%token K_priority K_program K_property K_protected K_pure K_rand K_randc
|
||||
%token K_randcase K_randsequence K_ref K_return K_sequence K_shortint
|
||||
/* Verilog-AMS 2.3 has defined "string" below! */
|
||||
%token K_shortreal K_solve K_static K_struct K_super
|
||||
%token K_tagged K_this K_throughout K_timeprecision K_timeunit K_type
|
||||
%token K_typedef K_union K_unique K_var K_virtual K_void K_wait_order
|
||||
%token K_wildcard K_with K_within
|
||||
/* Fake tokens that are passed once we have an initial token. */
|
||||
%token K_timeprecision_check K_timeunit_check
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue