tyru / dentaku Goto Github PK
View Code? Open in Web Editor NEWdentaku
Home Page: http://d.hatena.ne.jp/tyru/20091023/dentaku
dentaku
Home Page: http://d.hatena.ne.jp/tyru/20091023/dentaku
(いつか作る)俺々言語のテスト場所みたいなもの -fオプションで色々計算方法を変えられる どれで計算しても結果は同じ・・・なはず - "stack" - スタックを使う - 構文木など作らずそのまま計算 - "parser" - yacc&lexを使って実装 - "recursion" - 再帰的に計算 - 構文木は作らない 以下まったくの未実装 (というよりあんまりよく考えてない) - "compile" - コンパイルしてから実行 - 構文木を作る - トークンを全て読み込んでから式を評価していく - "rpn" - RPN記法に並び替えて実行 - 構文木は作らない ## そのた make testでテストできるけどPerlのモジュールが色々必要 あとあまり大きな数を入力するとHDDがフォーマットされるのでやめてください
演算子は2文字以上の時も考えて、テーブルじゃなく木構造に情報を補完するべき
memory-manager.c, MemeryManager, mm_init(), mm_malloc(), mm_destroy()
Makefile
I'm depending on GNU make :)
SRC = $(wildcard *.c)
もっとin-placeにできないだろうか。トークンと数値型をもっと密にできないだろうか。
-f stack
lexer.c
-f recursion
Digit構造体を_mpq_t_と_mpf_t_のunionにする
_al_malloc()_と_al_realloc()_はNULLが返った直後に_perror()_を呼び出してもいいことを明記する
トークンを先読みする_peek_token()@dentaku-recursion.c_などの関数をdentaku-core.cに入れる
テストがこけてるの気づかなかった...
remove unnecessary functions?
それぞれ演算子用の関数にinlineつける?
op.cをdigit.cに統合?
!かNULLと比較するかどっちかにしろ
tok.strを直接いじるのは何かおかしい
_alloc_list_をマルチスレッド対応する
サイズを超えたら使われてない変数を解放する
ポインタを一つだけ解放できればいいので_list_remove_n()_にする
実行時に-fオプション変えたい
バイトコードというか何らかの中間形式にしてから実行するものも作る
バイトコードの種類はllvmとかparrotとかなんか色々
(それより他の言語で計算できるようにする方が簡単そう)
時代はやっぱレジスタマシンだよな・・・
APL言語から面白い演算子を持ってくる
-f bytecode=...とかオプション取れるように
DBL_MAX(そんなんあったっけ?)より大きい時のみGMP使う
違うディレクトリにあるライブラリを使う場合はMakefileにrsyncする設定書いとくと楽?
あとGCによる領域確保を行わないでもalloca()的な動作ができるとうれしいかもしれない。
関数を抜けた時点で_copy_function_で確保した領域が解放されるような。
シンタックスツリーをdeparseする
空白などのオプションもつけられる
最適化された後か前か選べる
GUIつけたい(w
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.