【发布时间】:2020-03-08 14:07:17
【问题描述】:
我目前正在编写一个解决矩阵方程的程序,目前,我正在努力让解析器工作。但是,我不知道从哪里开始。
我有一个字符串数组,用于跟踪矩阵和运算符。例如方程
[[0, 0],[4, 5]] + [[4, 8], [12, 6]]
将按如下方式存储:
variables = ["$", "+", "$"]
matrices = [[[0, 0],[4, 5]], [[4, 8], [12, 6]]
因此,每个“$”符号代表不同数组中的一个矩阵。我还希望能够用不同的表达式包装我的矩阵,例如:
det([[0, 0],[4, 5]]) + inv([[0, 0],[4, 5]] + [[4, 8], [12, 6]])
其中det和inv分别对应行列式和逆行式。
在我的代码中,将存储为:
variables = ["d", "e", "t", "(", "$", ")", "+", "i", "n", "v", "(", "$", "+", "$", ")"]
matrices = [ [[0, 0],[4, 5]], [[0, 0],[4, 5]], [[4, 8], [12, 6]] ]
我的直觉是使用上下文无关语法来构建解析树,因为正则表达式在括号中不起作用......(?)。我也在考虑将我的表达式简单地转换为后缀符号,看看是否可行。
【问题讨论】:
标签: javascript parsing