12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #include<stdio.h>
- #include "interpreter.h"
- statement *make_statement(){ // make statement
- statement *tmp;
- tmp = malloc(sizeof(statement)); // get an address for base var
- tmp->next = NULL;
- tmp->type = start;
- return tmp;
- }
- statement *append_statement(statement *base_statement, statement *new_tmp){ // make statement next
- statement *tmp = base_statement; // iter var
- while(1){
- if (tmp->next == NULL){ // not var name *name
- break;
- }
- tmp = tmp->next; // get the next to iter
- }
- tmp->next = new_tmp;
- return new_tmp;
- }
- statement_list *make_statement_list(){ // make a empty var_list node
- statement_list *tmp;
- tmp = malloc(sizeof(statement_list)); // get an address for base var
- tmp->next = NULL;
- tmp->statement_base = NULL;
- return tmp;
- }
- statement_list *make_statement_base(statement *gloabl_code){
- statement_list *tmp = make_statement_list();
- tmp->statement_base = gloabl_code;
- return tmp;
- }
- statement_list *append_statement_list(statement *statement_base, statement_list *statment_list_base){ // make var_list[FILO]
- statement_list *tmp = make_statement_list();
- tmp->statement_base = statement_base;
- tmp->next = statment_list_base;
- return tmp;
- }
- statement *find_statement_list(int from, statement_list *statment_list_base){ // find var by func get_var in var_list[iter to find]
- statement_list *start = statment_list_base;
- for(int i = 0;i < from;i+= 1){
- if(start->next == NULL){
- break;
- }
- start = start->next;
- }
- return start->statement_base;
- }
- statement_list *free_statement_list(statement_list *statment_list_base){ // make var_list[FILO]
- statement_list *tmp = statment_list_base->next;
- if(tmp != NULL){
- free(statment_list_base);
- return tmp;
- }
- return statment_list_base;
- }
|