• Showing Page History #103433

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Formula

  • R/O
  • R/O (HTTP)
  • R/W (SSH)
  • R/W (HTTPS)
Fork

簡易言語実装の為のライブラリ

ユーザから
「自動計算させたい。」
なんていう要望を受けたとき、業務システム屋はお約束として細かい条件を聞き出し、起こりうるパターンを確定し、結局
「この時、このルールに従って計算する。」
なんて事をよくやります。

このとき、
「自分で計算式を編集したい」
なんて要望が出たら業務システム屋は
”見た目はいいけど作るのも操作するのも超めんどくさいフォーム"
を用意して、
"入力内容そっくりそのままな(DB上の)テーブルに格納する"
と言う事をやりがちです。というかほぼ必ずやります。で、時間がたっていざリリースという段階で
"なんでコレできないの?"
こういう入力できないの?
と言う話になって自分が作ったテーブル構造に引っ張られて自爆します。

式なんてわざわざドロップダウンから演算子選んでなんてやらずにテキストで書いてもらえばいいんです。
このプログラムは式を解釈実行するためのライブラリです。

プログラムの概要

このプログラムは一行スクリプトを実装するためのライブラリです。
このプログラムは大きく4つ、
・式のパーサーとそれに関連するAPI(DLL)
・サンプル演算子(DLL)
・サンプルメソッド(DLL)
・簡易デバッガ(EXE)
からなります。
簡易デバッガがついてますがコレはAPIの使い方サンプルです。

==プログラムの作り このプログラムはデザインパターン:Interpreterをベースにしています。 1.式を予約語単位に分解し(FormulaReader) 2.ダブルクォートやエスケープ文字を解釈し(BlockReader) 3.頭から順番に内容から構文木を作製し(FormulaParser) 4.作られた構文木を演算子の優先順位に従って組み替えて(PriorityChangeVisitor) 5.場合によっては構文木に登場する変数ノードを意識しつつ(VariableManager) 5.結果を得る。(INode.eval()) と言うステップで動作します。

osdn_formula_150801.jpg

リリースファイル (Release Files)

FilenameSizeTimeDownload count
FormulaDebugger_20160123.zip139.28 k2016-01-23 20:31:5250

最近のコミット (Recent Commits)

Rev.TimeAuthorMessage RSS
4407f9302017-04-19 22:54:18s_horimoto発生したエラーがうやむやになりやすいため内容を連結
48e813312017-04-08 10:44:57s_horimotoデバッガでステップ実行時、「,」の処理ができていなかった不...
5a744f842016-06-29 00:30:39s_horimotoノード関連のコメント拡充
178540212016-06-28 01:17:30s_horimotoInnerMethodOptimizer使用後の注意事項を追加
6d4faee22016-06-26 07:35:09s_horimotoオプティマイザ(自動関数化による計算量削減)を試験実装
5795452a2016-03-03 21:50:54s_horimotoキャッシュを利用した高速化ルーチンを実装
eb2ec9722016-03-02 11:15:41s_horimotoシンタックスハイライトの処理を「タイマー動作」と「常時(=...
723c8f102016-01-31 18:36:22s_horimoto説明を追加 日付関数のテスト追加
9c61e4232016-01-31 12:33:42s_horimoto日付関連の関数を追加
8c95a0612016-01-24 05:10:17s_horimoto日付変数とそれに関連する関数を部分的に実装

最近更新されたチケット (Latest updated Tickets)

No tickets

作業部屋 Wiki について

OSDN Wiki システムへようこそ。ここは作業部屋用の Wiki ページです。

ほぼプロジェクトと同じ機能が使えます。書式などに関しては、Wikiガイドを参照して下さい。

About Chamber Wiki

Welcome to OSDN Wiki system. Here is your chamber Wiki space.

Check Wiki Guide (English) to refer syntax and functions.