Skip to content

4ster-light/py-logic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐍 py-logic

Implementation of a logic formula parser and truth table generator in Python.

📚 Table of Contents

📜 Overview

This project is meant as educational material in order to learn about basic interpreters and the process of lexing and parsing a language as well as the concept of AST (Abstract Syntax Tree), therefore why it supports only basic logic symbols.

The choice of interpreting logic formulas was made due to its relative simplicity and the fact that it is related to computer science.

That is also the same reason the tutorial is written in Python, as it is a popular language for beginners and it is easy to understand, you can find the whole blog post here, and for more advanced learners looking for a challenge you can find the F# version here.

🛠 Usage

  • Run python main.py to generate a truth table for a given formula:
$ python main.py
Enter a logical formula (e.g., P & Q -> R, !A | B):

P & Q -> R

P | Q | R | P & Q -> R
----------------------
T | T | T | T
T | T | F | F
T | F | T | T
T | F | F | T
F | T | T | T
F | T | F | T
F | F | T | T
F | F | F | T
  • Run python main.py --debug to see the tokens and expression tree generated by the parser:
$ python main.py --debug

Enter a logical formula (e.g., P & Q -> R, !A | B):

P & Q -> R

- Formula:
  - P & Q -> R
- Tokens:
  - Token(type='Variable', lexeme='P')
  - Token(type='AndOp', lexeme='&')
  - Token(type='Variable', lexeme='Q')
  - Token(type='ImpliesOp', lexeme='->')
  - Token(type='Variable', lexeme='R')
  - Token(type='Eof', lexeme=None)
- Expression:
  - Implies(left=And(left=Var(name='P'), right=Var(name='Q')), right=Var(name='R'))

📋 Requirements

Only Python 3 or higher is required.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

💝 Sponsor

If you like this project, consider supporting me by buying me a coffee.

ko-fi

About

Implementation of a logic formula parser and truth table generator in Python

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Languages