一个系统有一个符号,需要写一个像(A+B)*C
as的表达式#MUL(#ADD(A,B),C)
。是否已经有一种算法可以进行这种符号转换,以便用户可以以更传统的方式输入?换句话说,一种从中缀转换的算法 -> 我的符号。第一个问题是我不知道我的符号的确切名称......它类似于反向抛光但不完全。每个运算符都被编码为带参数的函数。
问问题
380 次
3 回答
9
调车码算法可用于解析中缀符号。
于 2010-06-16T15:41:48.943 回答
1
这是一些尝试中缀 -> 前缀转换的 Lisp。它可以作为一个有用的起点。
于 2010-06-16T15:41:49.997 回答
0
使用 Lex 和 Yacc(Flex 和 Bison,它们是相同的)很容易解析这些简单的表达式。谷歌搜索“Yacc 计算器”。
我发现的一个例子是http://www.indiastudychannel.com/resources/56696-IMPLEMENTATION-OF-CALCULATOR-USING-YACC.aspx但您应该建立最终字符串,而不是计算结果。例如,像这样(伪代码):
expr: ‘(‘expr’)’
{
$$=$2;
}
|
expr ‘*’expr
{
$$="#MUL(" + S1 + "," + $3 + ")";
}
|
expr’/’expr
{
$$="#DIV(" + S1 + "," + $3 + ")";
}
于 2010-06-16T15:42:07.400 回答