我正在尝试解析(普通)微分方程。理想情况下,我更喜欢使用现有的解析器 - 否则,这会直接导致语法等问题,并且可能相当费力。
编辑:我们的想法是将方程式提供给SymPy的求解器和积分器,并用它做一些与问题无关的东西。
我找到了list自定义解析器,但它似乎有些过时,似乎没有提到我正在寻找的东西。
到目前为止,我已尝试 ast (我认为使用了compile())和同意,但没有成功:
lagrangeODE = '''f''(x) + f'(x) + f(x)'''
import ast
tree = ast.parse(lagrangeODE)
生成
tree = ast.parse(lagrangeODE)
File "<unknown>", line 1
f''(x) + f'(x) + f(x)
^
SyntaxError: invalid syntax
而
import sympy as sy
expr = sy.sympify(lagrangeODE)
产生
---------------------------------------------------------------------------
SyntaxError Traceback (most recent call last)
[...]
SympifyError: Sympify of expression 'could not parse "f''(x) + f'(x) + f(x)"' failed, because of exception being raised:
SyntaxError: invalid syntax (<string>, line 1)
对我来说,这基本上意味着ast和sympify不理解有关ODE的Langrangian符号。
请告知:
答案 0 :(得分:4)
public class EmployeeItem
{
public string Id { get; set; }
[JsonProperty(PropertyName = "Name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "Email")]
public string Email { get; set; }
[JsonProperty(PropertyName = "EmployeeID")]
public int EmployeeID { get; set; }
[JsonProperty(PropertyName = "Department")]
public string Department { get; set; }
[JsonProperty(PropertyName = "PrivledgeLevel")]
public string PrivledgeLevel { get; set; }
}
模块旨在解析Python。你的输入不是Python。同样,ast
旨在解析看起来像SymPy语法的字符串,而sympify
不是SymPy语法。这两种工具都不适合您的任务。
获取通用解析器生成器并编写语法。 pyparsing
将是一种选择。