#计算器 #命题 #真值表 #AST #逻辑 #表达式

logic_tracer

识别逻辑命题并跟踪其真值,同时生成真值表(仍在开发中)

10 个版本

0.0.10 2024 年 5 月 29 日
0.0.9 2024 年 4 月 25 日
0.0.8 2024 年 3 月 25 日
0.0.7 2024 年 1 月 1 日
0.0.6 2023 年 12 月 31 日

#249数学

Download history 13/week @ 2024-04-27 1/week @ 2024-05-04 4/week @ 2024-05-18 116/week @ 2024-05-25 15/week @ 2024-06-01 6/week @ 2024-06-08 2/week @ 2024-06-15 35/week @ 2024-06-29 52/week @ 2024-07-27

52 每月下载量

MIT 许可证

51KB
523 代码行

Algorithm
逻辑跟踪器

github crates.io docs.rs

逻辑跟踪器是一个简单的 crate,它读取逻辑命题并将其解释为 构建命题的真值表和 AST

使用正则表达式验证输入并对命题进行标记化。
还实现了 Shunting Yard 算法(尚未)来构建 AST。

示例

查看 示例 目录,了解如何使用该 crate。

cargo run --example <example name>

路线图

  • 读取逻辑命题
  • 标记化命题
  • 验证输入标记(仅有效标记)
    • 变量(仅字母)
    • 逻辑运算符(与、或、非、蕴含、当且仅当)
    • 数学运算符(加、减、乘、除、幂)
    • 复合表达式(仅数字、变量、带下标的变量)
  • 解析命题(确保有效)
  • 构建 AST(Shunting Yard 算法)(使用后缀表示法)
  • 为 AST 添加表示法(前缀、中缀、后缀)
  • 解决命题(评估 AST)
  • 添加真值表、AST、函数等美观的输出
  • 将命题简化为其最简形式(布尔代数)
    • 重新组合复合表达式(布尔代数)
    • 应用德摩根定律(布尔代数)
    • 应用分配律、结合律和交换律(布尔代数)
  • 添加更多示例
  • 添加更多测试
  • 改进文档
  • 改进 crate 的导入/导出(以提高其作为库的可用性)

考虑事项

  • 添加一些并行计算(以提高性能)

未来

  • 添加复杂数学迭代(和、积等)(以便能够解决更复杂的命题)
    • 测试复杂数学迭代的命题
  • 添加组合逻辑(多路复用器、解码器等)
  • 添加时序逻辑(触发器、寄存器等)
  • 添加一些几何证明(以便能够解决几何问题)
    • \sum_{i=1}^{n} i = \frac{n(n+1)}{2} 或类似的内容

我希望使这个 crate 完全独立于任何其他 crate. 所以 我将亲自实现解析器... 但我还会检查 pest crate 看看它是如何工作的,以及我是否可以在其他项目中使用它...(也许在将来)


许可证

本项目采用 MIT 许可证 进行许可

依赖关系

~0.3–0.8MB
~11K SLoC