Search packages, repositories and app categories

GitHub repositoryeuler2dot7/interpreter

Software architecture of interpreter in Dart

Software architecture of interpreter in Dart (Flutter)

Software architecture of interpreter in Dart project cover
Stars
2
Forks
2
Last push (UTC)
Dec 18, 2020
Project status
Active

Original README

English project snapshot. Visit GitHub for the latest content.

Software architecture of interpreter in Dart (Flutter)

This project is a part of my tech talk about OOP design of interpreters.

Arithmetic expressions interpreter.

The software accept arithmetic expression in input and provide 3 interpretation:

  • Result of evaluation
  • Abstract Syntax Tree structure
  • Stack machine assembler representation
Demo Application
  • The web app is available here -> demo
Example:

Example

Software Architecture in UML

Domain model

Domain model of expression evaluator

Structure

Package diagram

Interaction

Interaction diagram

AST evaluator (Visitor Pattern)

Visitor Pattern

Build

I used Android Studio in order to build:

  • Web App
  • Mobile App
  • Desktop App

Presentation

euler2dot7 GitHub avatar
GitHub author

euler2dot7 ↗

LanguagesDartCMakeC++HTMLCSwiftKotlinObjective-C

Flutter dependencies

Dependencies used

Dependency list 7 items

  • flutter{"sdk":"flutter"}
  • cupertino_icons^1.0.0
  • provider^4.3.2+2
  • graphview^0.6.1
  • flutter_testDevelopment{"sdk":"flutter"}
  • flutter_driverDevelopment{"sdk":"flutter"}
  • testDevelopment^1.15.4

App categories

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗