https://github.com/abrahum/diro
a dice expr parse lib
https://github.com/abrahum/diro
Last synced: about 1 month ago
JSON representation
a dice expr parse lib
- Host: GitHub
- URL: https://github.com/abrahum/diro
- Owner: abrahum
- License: mit
- Created: 2021-12-30T08:39:11.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-04-09T06:37:03.000Z (about 3 years ago)
- Last Synced: 2025-03-29T20:11:17.633Z (2 months ago)
- Language: Rust
- Size: 24.4 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Diro
一个骰子表达式解析 lib 。
### To-Do List
表达式解析:
- [x] 四则运算以及幂运算
- [x] 基本骰子表达式( xDy )
- [x] COC 规则(BPKQ)
- [x] 无限规则
- [x] 双重十字规则
- [x] Fate 规则解析结果解释运行:
- [x] 投掷并运算结果
- [x] 输出表达式字符串
- [x] S 表达式输出
- [x] 格式化输出中间执行过程Diro-py:
- [x] 解析表达式
- [x] 解释计算结果
- [ ] ~~格式化输出中间执行过程~~### 表达式规则
最基本的骰子表达式为 xDy, x 表示骰子个数, y 为骰子面数, 二者的取值范围为 u16。
骰子表达式大小写不敏感,不允许存在空格间隔。
COC 扩展规则可以在基础骰子表达式前后添加额外参数,可接受的参数有:
- b: 奖励骰
- p: 惩罚骰
- k: 取大骰
- q: 取小骰奖励骰与惩罚骰仅对 D100 有效,取数骰仅在多个骰子时有效(当取数大于骰子数时,会在表达式解析阶段报错)。
额外参数可选跟随一个无符号数字表示骰子个数,当存在多个同类型额外参数,骰子个数为叠加计算结果。
例子:
- `b2bd100p` : 奖励骰个数为 2+1-1=2 的 D100 骰子
- `k2d6` : 将会在解析阶段报错,数字默认左结合,正确的写法应为 `2d6k`### 相关项目
[OneDice](https://github.com/OlivOS-Team/onedice): Today, we stand as one. (with some distance 2333)