您好我正在尝试实现翻译。由于它变得越来越复杂,我将尝试更好地解释我想要实现的内容。
我需要指定一种新的类似 java 的语言。这种语言必须实现 java 方法的所有结构:变量声明、表达式、条件表达式、括号表达式等......该语言将使用向量、常量和布尔值。它具有不同的功能:log、avg、sqrt 以及 sum、diff、shift 等。这种语言必须翻译成plsql和其他语言。因此,定义的方法将成为 StoredProcedure 或 c++ 函数或其他任何东西。我还需要考虑数学约束,例如运算符的优先级(+、-、*、/、<<、>> 等等......)。
我已经得到这个提示:Decompose expression in base operation: ANTLR + StringTemplate
我需要知道完成任务的最佳解决方案。我想我必须以流水线方式使用您的所有解决方案,但我不想对解决方案使用试错法。
我尝试了不同的(分离的)解决方案,但把所有的东西放在一起对我来说很难。
我的最后一个问题是将向量和常量之间的表达式以及向量和向量之间的表达式分开。事实上,使用 plsql 我有不同的功能来处理这些情况。即表达式 vactor1+5(或 5+vector1)必须翻译为 PKG_FUN.constant_sum(cursor1, 5) 而不是 vector1+vector2 必须翻译为 PKG_FUN.vector_sum(vector1, vector2)。此外,我可以拥有产生向量的函数或表达式,以及产生常量的其他函数或表达式,这在分析表达式时必须考虑(即向量 a = vector1 +((5+var2)*ln(vector2)*2)^2)。
这种语言的一个例子可以是:
DEFINE my_new_method(date date_from, date date_to, long variable1, long variable2){
vector result;
vector out1;
vector out2;
int max = -5+(4);
out1 = GET(date_from, date_to, variable1, 20);
out2 = GET(date_from, date_to, variable2);
if(avg(out1) > max)
{
result = sqrt(ln(out2) + max)*4;
}else
{
result = out1 + ln(out1) + avg(out2);
}
for(int i=0; i<result.length ; i++)
{
int num = result.get(i);
result.set(num*5, i);
}
return result;
}
我应该把它翻译成 plsql、c 或 c++ 或其他语言。
任何帮助,将不胜感激。