Esempio n. 1
0
AST* assign(AST* ID, AST* expr)
{
    AST* temp = make_ast(yylineno, E_ASSIGN);
    strncpy(temp->d.assign.name_, ID->d.variable.name_, MAX_VAR_NAME);
    temp->d.assign.expr_=expr;
    return temp;
}
Esempio n. 2
0
static AST* make_binexpr(int lineno, int type, AST* lhs, AST* rhs)
{
    AST* tmp = make_ast(lineno, type);
    tmp->d.be.lhs_ = lhs;
    tmp->d.be.rhs_ = rhs;
    return tmp;
}
Esempio n. 3
0
AST* call(char* name, list* args)
{
    AST* ast = make_ast(yylineno, K_CALL);
    //printf(name);
    strncpy(ast->d.call.name_, name, MAX_CALLEE_NAME);
    ast->d.call.args_ = args;
    return ast;
}
Esempio n. 4
0
opcode_chain_t opcode_chain_add_langdef(opcode_chain_t oc, wast_t node,long row,long col) {
	ast_node_t n = make_ast(node);
	const char* str = tinyap_serialize_to_string(n);
	opcode_chain_node_t ocn = ochain_new_langdef(str,row,col);
	delete_node(n);
	slist_insert_tail(oc, ocn);
	return oc;
}
Esempio n. 5
0
ast_node_t make_ast(wast_t t) {
	int i;
	ast_node_t ret=NULL;
	if(!t) {
		return NULL;
	}
	if(wa_opd_count(t)==0) {
		return newAtom(wa_op(t),0);
	}
	for(i=wa_opd_count(t)-1;i>=0;i-=1) {
		ret = newPair( make_ast(wa_opd(t,i)), ret);
	}
	ret = newPair( newAtom(wa_op(t), wa_row(t)), ret);
	return ret;
}
Esempio n. 6
0
AST* num(int val)
{
    AST* ast = make_ast(yylineno, K_NUM);
    ast->d.val_ = val;
    return ast;
}
Esempio n. 7
0
AST* variable(char* ID)
{
    AST* temp = make_ast(yylineno, var_Name);
    strncpy(temp->d.variable.name_, ID, MAX_VAR_NAME);
    return temp;
}