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-09-08 11:03:09 UTC
README
为什么?
此存储库旨在作为一个示例,展示如何基于由LL(k)递归下降解析器生成的抽象语法树实现计算器。
作为语法使用的是具有操作符结合性的基本实现,且不受左递归的影响
{
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
示例
命令行界面
$ php ./bin/cc run
用法
全局
$ composer global require serafim/calc $ cc run
本地
$ composer require serafim/calc $ ./vendor/bin/cc run