Exemple #1
0
int Lex_analyzer_construct()
{
	struct Node *root=NULL;
	init();
	memset(isinput,0,sizeof(isinput));
	for(int i=0;i<token_n;i++)
	{
		struct Node *x=bds(tokens[i].regular);
		if(x==NULL)
		{
			printf("Token #%d:%s Is Wrong\n",i,tokens[i].name);
			printf("Lex analyzer construct failed.\n");
			return -1;
		}
		x->right->token=i;
		acposition[i]=x->right->n;
		if(root==NULL)root=x;
		else root=newNode('|'+256,root,x);
	}
	memset(followpos,0,sizeof(followpos));
	nfl(root);
	ptr(root,0);
	putchar('\n');
	print_followpos();
	DFA_from_regular(root);
	print_DFA();
	Minimizing_DFA();
	print_Minimized_DFA();
	return 0;
}
Exemple #2
0
/**********************************************************************
 *
 *	calcpos
 */
bool calcpos(void)
{
	rbuf.setsize = set_bytesize(rbuf.root+1);
	if (!set_pos() || !followpos()) {
		free_posmem();
		return FALSE;
	}
#ifdef TEST
	if (debug > 1) {
		print_tree();
		print_followpos();
	}
#endif
	free_posmem();
	return TRUE;
}
Exemple #3
0
int Test()
{
	char s[200];
	while(gets(s))
	{
		init();
		struct Node *x=bds(s);
		if(x)
		{
			memset(followpos,0,sizeof(followpos));
			nfl(x);
			ptr(x,0);
			putchar('\n');
			print_followpos();
			DFA_from_regular(x);
			print_DFA();
			Minimizing_DFA();
			print_Minimized_DFA();
		}
	}
	return 0;
}