serafim / calc
3.2.0
2024-04-08 10:05 UTC
Requires
- php: ^8.1
- phplrt/runtime: ^3.6
- symfony/console: ^5.4|^6.0|^7.0
Requires (Dev)
- phplrt/compiler: ^3.6
- symfony/var-dumper: ^5.4|^6.0|^7.0
This package is auto-updated.
Last update: 2024-10-08 11:11:09 UTC
README
Why?
This repository is designed as an example of how you can implement a calculator based on abstract syntax tree generated by the LL(k) recurrence recursive descent parser.
As a grammar used the basic implementation with operators associativity, and not vulnerable to left recursion:
{
tokens = [
T_FLOAT = "regexp:\d+\.\d+"
T_INT = "regexp:\d+"
]
}
<expr> ::= <addition> | <subtraction> | <term>
<term> ::= <multiplication> | <division> | <factor>
<factor> ::= "(" <expr> ")" | <value>
<subtraction> ::= <term> "-" <expr>
<addition> ::= <term> "+" <expr>
<multiplication> ::= <factor> "*" <term>
<division> ::= <factor> ("/" | "รท") <term>
<value> ::= T_FLOAT | T_INT
Example
Command Line Interface
$ php ./bin/cc run
Usage
Global:
$ composer global require serafim/calc $ cc run
Local:
$ composer require serafim/calc $ ./vendor/bin/cc run