Skip to content

Commit a4f2f15

Browse files
authored
Merge pull request #398 from diffblue/parse-tree-package-item
Verilog: parse tree now stores package_items
2 parents 2199fdd + 677a7e5 commit a4f2f15

File tree

3 files changed

+23
-30
lines changed

3 files changed

+23
-30
lines changed

src/verilog/parser.y

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,7 @@ description:
591591
| program_declaration
592592
| package_declaration
593593
| attribute_instance_brace package_item
594+
{ PARSER.parse_tree.create_package_item(stack_expr($2)); }
594595
| attribute_instance_brace bind_directive
595596
| config_declaration
596597
;

src/verilog/verilog_parse_tree.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,8 @@ void verilog_parse_treet::create_module(
2929
exprt &ports,
3030
exprt &module_items)
3131
{
32-
items.push_back(itemt());
32+
items.push_back(itemt(itemt::MODULE));
3333
itemt &item=items.back();
34-
35-
item.type=itemt::MODULE;
3634

3735
verilog_modulet &new_module=item.verilog_module;
3836

@@ -135,9 +133,10 @@ void verilog_parse_treet::itemt::show(std::ostream &out) const
135133
case itemt::MODULE:
136134
verilog_module.show(out);
137135
break;
138-
139-
case itemt::TYPEDEF:
140-
verilog_typedef.show(out);
136+
137+
case itemt::PACKAGE_ITEM:
138+
out << "Package item:\n";
139+
out << verilog_package_item.pretty() << '\n';
141140
break;
142141

143142
default:

src/verilog/verilog_parse_tree.h

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,37 +27,32 @@ class verilog_parse_treet
2727

2828
verilog_standardt standard;
2929

30-
class verilog_typedeft
30+
struct itemt
3131
{
3232
public:
33-
typet symbol;
34-
typet type;
35-
36-
void show(std::ostream &out) const
33+
typedef enum
34+
{
35+
MODULE,
36+
PACKAGE_ITEM
37+
} item_typet;
38+
item_typet type;
39+
40+
explicit itemt(item_typet __type) : type(__type)
3741
{
38-
out << "Typedef:\n";
39-
out << "\n";
4042
}
41-
};
4243

43-
struct itemt
44-
{
45-
public:
46-
typedef enum { MODULE, TYPEDEF } item_typet;
47-
item_typet type;
48-
4944
verilog_modulet verilog_module;
50-
51-
verilog_typedeft verilog_typedef;
52-
45+
46+
exprt verilog_package_item;
47+
5348
bool is_module() const
5449
{
5550
return type==MODULE;
5651
}
5752

58-
bool is_typedef() const
53+
bool is_package_item() const
5954
{
60-
return type==TYPEDEF;
55+
return type == PACKAGE_ITEM;
6156
}
6257

6358
void show(std::ostream &out) const;
@@ -88,12 +83,10 @@ class verilog_parse_treet
8883
exprt &ports,
8984
exprt &statements);
9085

91-
void create_typedef(irept &declaration)
86+
void create_package_item(exprt package_item)
9287
{
93-
items.push_back(itemt());
94-
items.back().type=itemt::TYPEDEF;
95-
items.back().verilog_typedef.symbol.swap(declaration.get_sub()[0]);
96-
items.back().verilog_typedef.type.swap(declaration.add(ID_type));
88+
items.push_back(itemt(itemt::PACKAGE_ITEM));
89+
items.back().verilog_package_item = std::move(package_item);
9790
}
9891

9992
void swap(verilog_parse_treet &parse_tree)

0 commit comments

Comments
 (0)