标签: equation

方程(表达式)解析器具有优先权?

我使用简单的堆栈算法开发了一个方程解析器,它将处理二进制(+, - ,|,&,*,/等)运算符,一元(!)运算符和括号.

但是,使用这种方法会让我拥有相同优先级的所有内容 - 无论操作符如何,都会从左到右进行评估,尽管可以使用括号强制执行优先级.

所以现在"1 + 11*5"会返回60,而不是人们所期望的56.

虽然这适用于当前项目,但我希望有一个通用例程,我可以用于以后的项目.

编辑清晰:

解析具有优先级的方程的好算法是什么?

我对一些简单的实现感兴趣,并且理解我可以自己编写代码来避免使用可用代码的许可问题.

语法:

我不明白语法问题 - 我是手写的.这很简单,我认为不需要YACC或Bison.我只需要用诸如"2 + 3*(42/13)"之类的方程计算字符串.

语言:

我在C中这样做,但我对算法感兴趣,而不是语言特定的解决方案.C足够低,如果需要,很容易转换成另一种语言.

代码示例

我发布了上面讨论的简单表达式解析器测试代码.项目要求发生了变化,因此我从不需要优化性能或空间代码,因为它没有包含在项目中.它是原始的详细形式,应该易于理解.如果我在运算符优先级方面做了更多的事情,我可能会选择宏hack,因为它简单地匹配程序的其余部分.但是,如果我在一个真实的项目中使用它,我将寻求一个更紧凑/更快速的解析器.

相关问题

数学解析器的智能设计?

-亚当

algorithm parsing equation

98
推荐指数
10
解决办法
8万
查看次数

如何在对齐环境中标记每个方程式?

我想知道如何在对齐环境中标记每个方程?例如

\begin{align} \label{eq:lnnonspbb}
\lambda_i + \mu_i = 0 \\
\mu_i \xi_i = 0 \\
\lambda_i [y_i( w^T x_i + b) - 1 + \xi_i] = 0
\end{align} 
Run Code Online (Sandbox Code Playgroud)

只标记第一个等式,后面只能引用第一个等式.

感谢致敬!

latex equation alignment

71
推荐指数
5
解决办法
14万
查看次数

只有一个数字的几个方程式

如何仅使用一个数字在对齐环境中为几个方程编号?

例如

\begin{align}
w^T x_i + b \geqslant 1-\xi_i \text{ if } y_i=1, \nonumber \\
w^T x_i + b \leqslant -1+\xi_i \text{ if } y_i=-1,
\end{align}
Run Code Online (Sandbox Code Playgroud)

编号将出现在第二个等式旁边.但如果它出现在两个方程的线之间会更好.

在这种情况下如何标记这组方程以供以后参考?

感谢致敬!

latex equation alignment

44
推荐指数
2
解决办法
9万
查看次数

网络上的数学方程式

如何在网上呈现数学公式?我已经熟悉了LaTeX的数学模式.

html math latex equation mathml

43
推荐指数
6
解决办法
3万
查看次数

用Python解析方程式

我如何(轻松地)获取一个字符串,例如"sin(x)*x^2"用户可能在运行时输入的字符串,并生成一个可以评估任何值的Python函数x

python parsing equation

38
推荐指数
4
解决办法
5万
查看次数

是否可以使用Matplotlib绘制隐式方程?

我想在Matplotlib中绘制隐式方程(形式为f(x,y)= g(x,y),例如X ^ y = y ^ x).这可能吗?

python equation matplotlib implicit sympy

30
推荐指数
4
解决办法
3万
查看次数

如何在html中编写方程式?

我想在我的网页上写一些复杂的数学方程式.是否有任何插件或任何东西?

html equation

30
推荐指数
4
解决办法
7万
查看次数

Microsoft Equation 3.0中实数集的"R"符号

如何使用MS Word中提供的Microsoft Equation 3.0将实数的R符号插入等式中?我的意思是这个双重打击的首都ℝ.

我很努力并且已经尝试过:
- 复制并粘贴
- 将ASCII十六进制代码211D转换为希望的符号
- 使用特殊字体作为Cambria Math和其他人

所有这些选项在运行文本中完美地起作用,但在公式中不起作用!
让我的一天,并告诉我,这是可能的(必须在MS方程式).谢谢.

equation ms-word typeface

29
推荐指数
5
解决办法
6万
查看次数

使用numpy中的python数值解算器求解方程

我有一个等式,如下:

R - ((1.0 - np.exp(-tau))/(1.0 - np.exp(-a*tau))) = 0.

我想tau用numpy中可用的数值解算器在这个等式中求解.最好的方法是什么?

对于该公式的不同实现,该等式中的值Ra该等式的值不同,但是当要针对tau求解时,将其固定在特定值.

equation numpy solver python-2.7

28
推荐指数
2
解决办法
7万
查看次数

我如何打破线上的长方程?

我想在一个新的行中添加一个等式.问题是该等式对于该行来说太长了,我需要手动打破它.否则,它只是重叠到右列,或右边距(看起来很丑......).LaTeX有没有办法为我制造方程式,所以看起来不错?

我附上我的乳胶代码:

\begin{align*}
f(n)-f(0) &= A(n)-B(n)-C(n)-D(n)\cdot d-\left(A(0)-B(0)-C(0)-D(0)\cdot d\right) \\
          &= A(n)-0-X-D(n)\cdot d-\left(0-0-0-0\right) \\
          &= A(n)-X-D(n)\cdot d
\end{align*}
Run Code Online (Sandbox Code Playgroud)

有问题的线是第一条线,太长了.

latex equation

26
推荐指数
2
解决办法
6万
查看次数