Updated codegen.ml

Added code generation for math functions.

Now it can generate cpp code correctly, which matches the data
structure that our cpp library uses.

Here is an example:
1. Input:
main()
{
	f($x, $y) = 2 * x ^ 2 + y * 3;
	:f(1, 2);
}

2. Generated:

#include <cstdio>
#include "calcul2.h"
using namespace std;

int main()
{
	double printer;

	vector<string> f_var;
	f.push_back("x");
	f.push_back("y");
	vector<double> f_now;
	FTree f(f_var);

	f.AddNode(new FNode(T_VAL,2.));
	f.AddNode(new FNode(T_OP,0,TIMES));
	f.AddNode(new FNode(T_VAR,0,0));
	f.AddNode(new FNode(T_OP,0,POWER));
	f.AddNode(new FNode(T_VAL,2.));
	f.AddNode(new FNode(T_OP,0,PLUS));
	f.AddNode(new FNode(T_VAR,0,1));
	f.AddNode(new FNode(T_OP,0,TIMES));
	f.AddNode(new FNode(T_VAL,3.));

	f_now.clear();
	f_now.pushback("1.");
	f_now.pushback("2.");
	printer = f.GetValue(f_now);
	printf("%lf\n",printer);

	return 0;
}