useless
This commit is contained in:
		
							parent
							
								
									0dc4ee873e
								
							
						
					
					
						commit
						dee4624ab3
					
				
							
								
								
									
										121
									
								
								cparse.c.~1~
									
									
									
									
									
								
							
							
						
						
									
										121
									
								
								cparse.c.~1~
									
									
									
									
									
								
							@ -1,121 +0,0 @@
 | 
				
			|||||||
#include "vec.h"
 | 
					 | 
				
			||||||
#include <errno.h>
 | 
					 | 
				
			||||||
#include <regex.h>
 | 
					 | 
				
			||||||
#include <stdbool.h>
 | 
					 | 
				
			||||||
#include <stdio.h>
 | 
					 | 
				
			||||||
#include <stdlib.h>
 | 
					 | 
				
			||||||
#include <string.h>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int find_funcs(const char *path)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	FILE *fp;
 | 
					 | 
				
			||||||
	regex_t fdre, fcre;
 | 
					 | 
				
			||||||
	int ret;
 | 
					 | 
				
			||||||
	char line[1024];
 | 
					 | 
				
			||||||
	char boum[1024];
 | 
					 | 
				
			||||||
	regmatch_t rm[2];
 | 
					 | 
				
			||||||
	const char *re_func_decl = "^(\\w+(\\s+)?){2,}\\([^!@#$+%^]+?\\)\\s+";
 | 
					 | 
				
			||||||
	const char *re_func_call = "([a-zA-Z_0-9]+)\\(.*\\)";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fp = fopen(path, "r");
 | 
					 | 
				
			||||||
	if (fp == 0) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "Failed to open file %s (%d: %s)\n", path, errno, strerror(errno));
 | 
					 | 
				
			||||||
		return EXIT_FAILURE;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	ret = regcomp(&fdre, re_func_decl, REG_EXTENDED);
 | 
					 | 
				
			||||||
	if (ret != 0) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "Failed to compile regex '%s'\n", re_func_decl);
 | 
					 | 
				
			||||||
		return EXIT_FAILURE;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	ret = regcomp(&fcre, re_func_call, REG_EXTENDED);
 | 
					 | 
				
			||||||
	if (ret != 0) {
 | 
					 | 
				
			||||||
		fprintf(stderr, "Failed to compile regex '%s'\n", re_func_call);
 | 
					 | 
				
			||||||
		return EXIT_FAILURE;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	int i = 0;
 | 
					 | 
				
			||||||
	bool in = false;
 | 
					 | 
				
			||||||
	graph_vec g = new_graph(10);
 | 
					 | 
				
			||||||
	// while ((fgets(line, 1024, fp)) != NULL) {
 | 
					 | 
				
			||||||
	// 	if (regexec(&fdre, line, 2, rm, 0) == 0) {
 | 
					 | 
				
			||||||
	// 		// printf("Line: <<%.*s>>\n", (int)(rm[0].rm_eo - rm[0].rm_so), line + rm[0].rm_so);
 | 
					 | 
				
			||||||
	// 		sprintf(boum, "%.*s", (int)(rm[1].rm_eo - rm[1].rm_so), line + rm[1].rm_so);
 | 
					 | 
				
			||||||
	// 		insert_node(&g, i, boum);
 | 
					 | 
				
			||||||
	// 		i++;
 | 
					 | 
				
			||||||
	// 	}
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	// rewind(fp);
 | 
					 | 
				
			||||||
	// i = -1;
 | 
					 | 
				
			||||||
	int index;
 | 
					 | 
				
			||||||
	int i1, i2 = -1;
 | 
					 | 
				
			||||||
	while ((fgets(line, 1024, fp)) != NULL) {
 | 
					 | 
				
			||||||
		if (in && line[0] == '}') {
 | 
					 | 
				
			||||||
			in = false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if (in) {
 | 
					 | 
				
			||||||
			if (regexec(&fcre, line, 2, rm, 0) == 0) {
 | 
					 | 
				
			||||||
				// printf("Line: <<%.*s>>\n", (int)(rm[0].rm_eo - rm[0].rm_so), line + rm[0].rm_so);
 | 
					 | 
				
			||||||
				sprintf(boum, "%.*s", (int)(rm[1].rm_eo - rm[1].rm_so), line + rm[1].rm_so);
 | 
					 | 
				
			||||||
				if ((index = is_in(g, boum))) {
 | 
					 | 
				
			||||||
					if (g.node[i2]->nbs == g.node[i2]->cap)
 | 
					 | 
				
			||||||
						g.node[i2]->succ = reallocarray(g.node[i2]->succ, (g.node[i2]->cap += 5), sizeof(nodept));
 | 
					 | 
				
			||||||
					// printf("NBS = %d %s\n", g.node[index]->num, g.func[index]);
 | 
					 | 
				
			||||||
					// g.node[i]->succ = malloc(sizeof(nodept));
 | 
					 | 
				
			||||||
					g.node[i2]->succ[i1] = g.node[index];
 | 
					 | 
				
			||||||
					g.node[i2]->nbs++;
 | 
					 | 
				
			||||||
					i1++;
 | 
					 | 
				
			||||||
					// insert_succ(g.node[i], g.node[index]);
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					insert_node(&g, i, boum);
 | 
					 | 
				
			||||||
					i++;
 | 
					 | 
				
			||||||
					// if (g.node[i]->nbs == g.node[i]->cap)
 | 
					 | 
				
			||||||
					// 	g.node[i]->succ = reallocarray(g.node[i]->succ, (g.node[i]->cap += 5), sizeof(nodept));
 | 
					 | 
				
			||||||
					// struct node *n = malloc(sizeof(struct node));
 | 
					 | 
				
			||||||
					// n->num = i;
 | 
					 | 
				
			||||||
					// n->nbs = 0;
 | 
					 | 
				
			||||||
					// // n->cap = 5;
 | 
					 | 
				
			||||||
					// // n->succ = malloc(5 * sizeof(nodept));
 | 
					 | 
				
			||||||
					// strcpy(n->func, boum);
 | 
					 | 
				
			||||||
					// g.node[i]->succ[i1] = n;
 | 
					 | 
				
			||||||
					// g.node[i]->nbs++;
 | 
					 | 
				
			||||||
					// i1++;
 | 
					 | 
				
			||||||
					// insert_succ(&g, i, i1, boum);
 | 
					 | 
				
			||||||
					// i1++;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		} else if (regexec(&fdre, line, 2, rm, 0) == 0) {
 | 
					 | 
				
			||||||
			sprintf(boum, "%.*s", (int)(rm[1].rm_eo - rm[1].rm_so), line + rm[1].rm_so);
 | 
					 | 
				
			||||||
			insert_node(&g, i, boum);
 | 
					 | 
				
			||||||
			i++;
 | 
					 | 
				
			||||||
			i2++;
 | 
					 | 
				
			||||||
			in = true;
 | 
					 | 
				
			||||||
			i1 = 0;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	for (int j = 0; j < i; j++) {
 | 
					 | 
				
			||||||
		printf("NODE %d: %s\n",j, g.node[j]->func);
 | 
					 | 
				
			||||||
		for (int n = 0; n < g.node[j]->nbs; n++) {
 | 
					 | 
				
			||||||
			printf("SUCC %d: %s\n",j, g.node[j]->succ[n]->func);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	// for (int j = 0; j < i; j++) {
 | 
					 | 
				
			||||||
	// 	printf("fc %s\n", boum2[j]);
 | 
					 | 
				
			||||||
	// }
 | 
					 | 
				
			||||||
	regfree(&fdre);
 | 
					 | 
				
			||||||
	regfree(&fcre);
 | 
					 | 
				
			||||||
	fclose(fp);
 | 
					 | 
				
			||||||
	delete_graph(&g);
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int main(int argc, char *argv[])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	find_funcs("./memline.c");
 | 
					 | 
				
			||||||
	// graph_vec g = new_graph(3);
 | 
					 | 
				
			||||||
	// insert_node(&g, new_node(0), "main");
 | 
					 | 
				
			||||||
	// insert_node(&g, new_node(1), "main1");
 | 
					 | 
				
			||||||
	// insert_node(&g, new_node(2), "main2");
 | 
					 | 
				
			||||||
	// printf("%d %d %d\n", g.node[0]->num,g.node[1]->num,g.node[2]->num);
 | 
					 | 
				
			||||||
	// printf("%s %s %s\n", g.func[0],g.func[1],g.func[2]);
 | 
					 | 
				
			||||||
	// delete_graph(&g);
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user