00001 #include "types.h"
00002
00003 void parse_to_ast();
00004
00005
00006 void init_parser();
00007 void cleanup_parser();
00008 void cleanup_hard_blocks();
00009 void init_parser_for_file();
00010 void clean_up_parser_for_file();
00011
00012
00013 ast_node_t *newSymbolNode(char *id, int line_number);
00014 ast_node_t *newNumberNode(char *num, int line_number);
00015 ast_node_t *newList(ids type_id, ast_node_t *expression);
00016 ast_node_t *newList_entry(ast_node_t *concat_node, ast_node_t *expression);
00017 ast_node_t *newListReplicate(ast_node_t *exp, ast_node_t *child );
00018 ast_node_t *markAndProcessSymbolListWith(short id, ast_node_t *symbol_list);
00019
00020
00021 ast_node_t *newArrayRef(char *id, ast_node_t *expression, int line_number);
00022 ast_node_t *newRangeRef(char *id, ast_node_t *expression1, ast_node_t *expression2, int line_number);
00023 ast_node_t *newBinaryOperation(operation_list op_id, ast_node_t *expression1, ast_node_t *expression2, int line_number);
00024 ast_node_t *newUnaryOperation(operation_list op_id, ast_node_t *expression, int line_number);
00025
00026
00027 ast_node_t *newPosedgeSymbol(char *symbol, int line_number);
00028 ast_node_t *newNegedgeSymbol(char *symbol, int line_number);
00029
00030
00031 ast_node_t *newCaseItem(ast_node_t *expression, ast_node_t *statement, int line_number);
00032 ast_node_t *newDefaultCase(ast_node_t *statement, int line_number);
00033 ast_node_t *newNonBlocking(ast_node_t *expression1, ast_node_t *expression2, int line_number);
00034 ast_node_t *newBlocking(ast_node_t *expression1, ast_node_t *expression2, int line_number);
00035 ast_node_t *newIf(ast_node_t *compare_expression, ast_node_t *true_expression, ast_node_t *false_expression, int line_number);
00036 ast_node_t *newIfQuestion(ast_node_t *compare_expression, ast_node_t *true_expression, ast_node_t *false_expression, int line_number);
00037 ast_node_t *newCase(ast_node_t *compare_expression, ast_node_t *case_list, int line_number);
00038 ast_node_t *newAlways(ast_node_t *delay_control, ast_node_t *statements, int line_number);
00039
00040
00041 ast_node_t *newModuleConnection(char* id, ast_node_t *expression, int line_number);
00042 ast_node_t *newModuleNamedInstance(char* unique_name, ast_node_t *module_connect_list, int line_number);
00043 ast_node_t *newModuleInstance(char* module_ref_name, ast_node_t *module_named_instance, int line_number);
00044
00045
00046 ast_node_t *newGateInstance(char* gate_instance_name, ast_node_t *expression1, ast_node_t *expression2, ast_node_t *expression3, int line_number);
00047 ast_node_t *newGate(operation_list gate_type, ast_node_t *gate_instance, int line_number);
00048
00049
00050 ast_node_t *newAssign(ast_node_t *statement, int line_number);
00051 ast_node_t *newVarDeclare(char* symbol, ast_node_t *expression1, ast_node_t *expression2, ast_node_t *expression3, ast_node_t *expression4, ast_node_t *value, int line_number);
00052
00053
00054 ast_node_t *newModule(char* module_name, ast_node_t *list_of_ports, ast_node_t *list_of_module_items, int line_number);
00055 void next_module();
00056 void newConstant(char *id, char *number, int line_number);
00057 void newDefparam(char *inst, char *param, char *val, int line_number);
00058
00059 void next_parsed_verilog_file(ast_node_t *file_items_list);
00060
00061
00062 void graphVizOutputAst(char* path, ast_node_t *top);
00063 void graphVizOutputAst_traverse_node(FILE *fp, ast_node_t *node, ast_node_t *from, int from_num);