-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
Example SystemVerilog file: factory-method-example.sv.txt
interface class Shape;
pure virtual function void draw();
endclass
class Rectangle implements Shape;
function void draw();
$display("Drawing a rectangle");
endfunction
endclass
class Circle implements Shape;
function void draw();
$display("Drawing a circle");
endfunction
endclass
class ShapeFactory;
static function Shape createShape(string shapeType);
if (shapeType == "rectangle") begin
Rectangle newShape = new();
return newShape;
end
else if (shapeType == "circle") begin
Circle newShape = new();
return newShape;
end
else begin
$display("Invalid shape type");
return null;
end
endfunction
endclass
module top;
Shape myShape;
initial begin
myShape = ShapeFactory::createShape("rectangle");
myShape.draw();
myShape = ShapeFactory::createShape("circle");
myShape.draw();
myShape = ShapeFactory::createShape("triangle");
if (myShape != null) begin
myShape.draw();
end
$finish;
end
endmodule
Got error in treesit-explore-mode
(source_file
(package_or_generate_item_declaration
(interface_class_declaration interface class
(class_identifier (simple_identifier))
(interface_class_item ;)
(interface_class_item
(interface_class_method pure virtual
(function_prototype function
(data_type_or_void void)
(function_identifier
(function_identifier (simple_identifier)))
( ))
;))
endclass))
(package_or_generate_item_declaration
(class_declaration class
(class_identifier (simple_identifier))
implements
(interface_class_type
(class_identifier (simple_identifier)))
;
(class_item
(class_method
(function_declaration function
(function_body_declaration
(function_data_type_or_implicit1
(data_type_or_void void))
(function_identifier
(function_identifier (simple_identifier)))
( ) ;
(function_statement_or_null
(function_statement
(statement
(statement_item
(system_tf_call (system_tf_identifier)
(list_of_arguments_parent (
(expression
(primary
(primary_literal
(string_literal " "))))
)))
;))))
endfunction))))
endclass))
(package_or_generate_item_declaration
(class_declaration class
(class_identifier (simple_identifier))
implements
(interface_class_type
(class_identifier (simple_identifier)))
;
(class_item
(class_method
(function_declaration function
(function_body_declaration
(function_data_type_or_implicit1
(data_type_or_void void))
(function_identifier
(function_identifier (simple_identifier)))
( ) ;
(function_statement_or_null
(function_statement
(statement
(statement_item
(system_tf_call (system_tf_identifier)
(list_of_arguments_parent (
(expression
(primary
(primary_literal
(string_literal " "))))
)))
;))))
endfunction))))
endclass))
(package_or_generate_item_declaration
(class_declaration class
(class_identifier (simple_identifier))
;
(class_item
(class_method
(method_qualifier
(class_item_qualifier static))
(function_declaration function
(function_body_declaration
(function_data_type_or_implicit1
(data_type_or_void
(data_type (simple_identifier))))
(function_identifier
(function_identifier (simple_identifier)))
(
(tf_port_list
(tf_port_item1
(data_type_or_implicit1
(data_type string))
(port_identifier (simple_identifier))))
) ;
(function_statement_or_null
(function_statement
(statement
(statement_item
(conditional_statement if (
(cond_predicate
(expression
(expression
(primary (simple_identifier)))
==
(expression
(primary
(primary_literal
(string_literal " "))))))
)
(statement_or_null
(statement
(statement_item
(seq_block begin
(block_item_declaration
(data_declaration
(data_type_or_implicit1
(data_type (simple_identifier)))
(list_of_variable_decl_assignments
(variable_decl_assignment (simple_identifier) =
(class_new new
(list_of_arguments_parent ( )))))
;))
(statement_or_null
(statement
(statement_item
(jump_statement return
(expression
(primary (simple_identifier)))
;))))
end))))
else
(statement_or_null
(statement
(statement_item
(conditional_statement if (
(cond_predicate
(expression
(expression
(primary (simple_identifier)))
==
(expression
(primary
(primary_literal
(string_literal " "))))))
)
(statement_or_null
(statement
(statement_item
(seq_block begin
(block_item_declaration
(data_declaration
(data_type_or_implicit1
(data_type (simple_identifier)))
(list_of_variable_decl_assignments
(variable_decl_assignment (simple_identifier) =
(class_new new
(list_of_arguments_parent ( )))))
;))
(statement_or_null
(statement
(statement_item
(jump_statement return
(expression
(primary (simple_identifier)))
;))))
end))))
else
(statement_or_null
(statement
(statement_item
(seq_block begin
(statement_or_null
(statement
(statement_item
(system_tf_call (system_tf_identifier)
(list_of_arguments_parent (
(expression
(primary
(primary_literal
(string_literal " "))))
)))
;)))
(statement_or_null
(statement
(statement_item
(jump_statement return
(expression
(primary null))
;))))
end)))))))))))))
endfunction))))
endclass))
(ERROR
(module_header
(module_keyword module)
(simple_identifier))
;
(module_or_generate_item
(package_or_generate_item_declaration
(net_declaration (simple_identifier)
(list_of_net_decl_assignments
(net_decl_assignment (simple_identifier)))
;)))
initial begin
(variable_lvalue (simple_identifier))
(assignment_operator =)
(ERROR
(package_scope
(package_identifier (simple_identifier))
::)
(simple_identifier) ( " (simple_identifier)
(casting_type
(constant_primary
(primary_literal
(string_literal " "))))
(simple_identifier)
(casting_type
(constant_primary
(primary_literal
(string_literal " "))))
(simple_identifier))
"))
Metadata
Metadata
Assignees
Labels
No labels