Skip to content

Latest commit

 

History

History
59 lines (44 loc) · 1.67 KB

README.md

File metadata and controls

59 lines (44 loc) · 1.67 KB

真值表法计算主析取合取范式

本项目是一个离散数学课程实验,目的是使用真值表法来计算主析取范式和主合取范式。

功能特性

  1. 使用flex和bison进行语法和语义解析。
  2. 构建语义树并通过Analyzer转化为执行树。
  3. 枚举所有变量的0-1取值并计算真值。
  4. 输出真值表。
  5. 打印主析取范式与主合取范式。

如何运行

  1. 确保您的系统上安装了cmake flexbison
  2. 使用以下命令编译项目,生成的可执行文件将在build目录下
    cmake -Bbuild
    cmake --build build
  3. 运行程序并输入逻辑表达式。例如:
    ./FormulaEvaluator

项目结构

  • main.cpp: 主程序入口,负责处理IO、枚举变量取值、计算求值并求得主合取范式与主析取范式。
  • parser/: 解析器的flex文件与yacc文件,与语义树节点的定义。
  • analyze/: 包含Analyzer的实现,用于将语义树转化为执行树。
  • evaluator/: 包含算子的实现。

通过模块式地增加处理更多算符的代码,可以轻易地在本程序的功能上拓展出对更多算符的支持。

示例

输入:

A | B & C

输出:

        A       B       C       Ans
0       F       F       F       F
1       T       F       F       T
2       F       T       F       F
3       T       T       F       T
4       F       F       T       F
5       T       F       T       T
6       F       T       T       T
7       T       T       T       T

主合取范式:  (A | B | C) & (A | !B | C) & (A | B | !C)
主析取范式:  (A & !B & !C) | (A & B & !C) | (A & !B & C) | (!A & B & C) | (A & B & C)