Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

計算機機能を実装する #39

Open
ochaochaocha3 opened this issue Mar 27, 2015 · 2 comments
Open

計算機機能を実装する #39

ochaochaocha3 opened this issue Mar 27, 2015 · 2 comments
Assignees

Comments

@ochaochaocha3
Copy link
Member

オンラインセッションでの利用を想定した計算機機能を実装する。

まずとりあえず使える程度に実装する。その後ダイスロール等を拡張して BCDice 等のように充実させていければ良いのかな、と。

@ochaochaocha3 ochaochaocha3 self-assigned this Mar 27, 2015
ochaochaocha3 added a commit that referenced this issue Mar 27, 2015
refs #39

インタプリタ型

* 構文解析器(文法は PEG で記述、Packrat Parser)
* 抽象構文木の生成
* 抽象構文木を評価し、計算結果を返す
* 抽象構文木から中置記法の数式を生成する
@ochaochaocha3
Copy link
Member Author

ダイスロールの表示案。BCDice と OD_TOOL を混ぜた感じに。

2*(1+1)d6+1
> 2 * 2d6 + 1 = 2 * 11[6,5] + 1 = 23
  1. 抽象構文木のダイスロールノードについて、振る数・面数を評価する。
    • それらの中にさらにダイスロールノードがあるときはどうなる?
    • BCDice のようにダイスロールの中にダイスロールを含めないようにする手も(([1...3]+1)d6 のような)
  2. ダイスロールを評価し、結果を確定させる。
  3. 全体を評価し、最終計算結果を出す。

@ochaochaocha3
Copy link
Member Author

GoBCDiceでようやくアルゴリズム(字句解析、構文解析、中置表記、評価)が固まったので、移植すれば実現できるようになりました。RaccでLALR(1)構文解析器を作る方針。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant