Exemplo n.º 1
0
AST performAction(AST t)
{
	AST s = t;
	AST ret;
	
	if(s->kind == ACTION_NK)
	{
		AST x = performAction(s->fields.subtrees.s1);
		AST y = applyNode(s->fields.subtrees.s2,x);
		ret = performAction(simplify(y));
	}
	else if(s->kind == BASIC_FUNC_NK)
	{
		if(s->extra == PRILST_FK)
		{
			AST x= simplify(s->fields.subtrees.s1);
			while(x->kind != EMPTYLIST)
			{	
				if(x->kind == ERROR_NK)
					ret= errorNode(x->fields.stringval);
				AST y = applyBasicFunc(x,"head");
				AST tmp = simplify(y);
				printValue(simplify(tmp));
				y = applyBasicFunc(x,"tail");
				x = simplify(y);
			}
			ret = emptyList();
		}
		else if(s->extra == PRINT_FK)
		{
			AST r = simplify(s->fields.subtrees.s1);
			printValue(r);
			ret = emptyList();
		}
		else if(s->extra == PROD_FK)
		{
			ret = simplify(s->fields.subtrees.s1);
		}
		else if(s->extra == READI_FK)
		{
			char str[11];
			if(fgets(str,11,stdin) != NULL)		
				ret = numberNode(atoi(str));
			else
				ret = errorNode("Not a valid number");
		}
		else if(s->extra == READC_FK)
		{
			char str[2];
			if(fgets(str,2,stdin) != NULL)		
				ret = charNode(str);
			else
				ret = errorNode("Not a valid character");
		}
		else
		{
			ret = errorNode("No action specified");
		}
	}
	else if(s->kind == ERROR_NK)
	{
		ret = errorNode(s->fields.stringval);
	}
	else
	{
		ret = errorNode("No action specified");
	}
	return ret;
}
Exemplo n.º 2
0
 virtual void apply(osg::Group& node)
 {
     applyNode(node);
 }
Exemplo n.º 3
0
 virtual void apply(osg::Geometry& node)
 {
     applyNode(node);
 }
Exemplo n.º 4
0
 virtual void apply(osg::Node& node)
 {
     applyNode(node);
 }
Exemplo n.º 5
0
 virtual void apply(osg::MatrixTransform& node)
 {
     applyNode(node);
 }