Giter Site home page Giter Site logo

arithmetic-expressions's Introduction

Calculator for arithmetic expressions

License: MIT CI

In this repository, I considered a parsing algorithm using recursive descent for a context-free LL(1) grammar of the language of arithmetic expressions. I use Top-Down parser to create an expression tree.

Based on this idea:

Grammar for arithmetic expressions:

demo image

Getting Started

Prerequisites

I use Python3.7.0 or higher, so first of all we need to install some python packages so that we can run tests and check types as well.

pip install -r requirements.txt

Installing

Simply run:

pip install .

Running the tests

Tests based on Pytest fraimwork, to run all tests, enter:

pytest ./tests/

Sample Tests

The tests in the section tests / test_calculation are needed to check the correctness of the calculation of arithmetic expressions. A few simple test cases:

CASES = [CaseCalc("1", 1),
         CaseCalc("1 + 2", 3),
         CaseCalc("1 - 2", -1)]

Style test

To check code style i use flake8 and mypy for typings. Run the following command to start checking

  • for PEP8 code style:
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
  • for typing:
mypy ./

License

This project is licensed under the MIT

arithmetic-expressions's People

Contributors

alexeyhorkin avatar

Watchers

 avatar  avatar

arithmetic-expressions's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.