git clone https://github.com/kayleema/tanuki.git
cd tanuki
git submodule init
git submodule update
cloneしたレポジトリのrootから
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make tanuki
ビルドした後でmake install
を実行。
- C++11 compatible compiler
- cmake
- fakeit (git submodule に入っている)
- googletest (git submodule に入っている)
- websocketpp (git submodule に入っている)
xcode-select --install
brew install cmake
apt-get install -y build-essential git cmake autoconf libtool pkg-config libasio-dev nlohmann-json3-dev
./tanuki <ファイル名.tnk>
説明メッセージを表示:
./tanuki -h
インストールすると、「狸」のaliasを作成されるから「tanuki」の代わりに「狸」でもかけます。
VSCodeとのインテグレーション: https://marketplace.visualstudio.com/items?itemName=tanuki1.pin
SublimeTextとのインテグレーション: (Sublime Text → Preferences → Browse Packages)をクリックして。Gitレポジトリの「tanuki.sublime-syntax」ファイルを「Packages/User/」にドラッグする。
build
のディレクトリの中から
make tanuki_test && ./tanuki_test
tests.tnk
ファイルに入っているテストを実行する:
make tanuki && ./tanuki ../testpin/tests.tnk
GCCでtanuki_test
をビルドする時にcmake -DCMAKE_BUILD_TYPE=Debug ..
しないといけない。
fakeitのライブラリはGCCの-O2
以上サポートしないだからです。
codingquestions.tnk
ファイルに入っているテストを実行する:
make tanuki && ./tanuki ../example/codingquestions.tnk
名前=「鈴木」
年齢=12
挨拶=名前+「と申します」
#呼ぶ
表示(「こんにちは」、「世界」)
#作る
関数、関数名(引数1、引数2)
返す、引数1+引数2
末尾再帰(tail recursion)はオプティマイズされました。
#この関数が定義された状態で…
関数、高階関数(渡す直、もらった関数)
表示(もらった関数(渡す直))
#関数を直接定義して渡すことができます。↓
高校関数(2):項目
返す、項目*5
#(10が表示されます)
#上の二行と下の三行は同じ動きとなります。
関数、無名(項目)
返す、項目*5
高校関数(2、無名)
表示(1+5ー4)
表示(1+5<=10-2)
使える演算子:
- ==
- !=
- >=
- <=
- >
- <
- +
- -
- 「ー」(カタカナ)と「-」(全角ハイフン)と「一」(いち)と「-」(半角ハイフン)があります
- マイナスとして使う時に、全角ハイフン鹿使えません。
関数、アルコール飲んでもいい(年齢)
もし、年齢>=20
表示(「はい!」)
あるいは、年齢==19
表示(「いいえ、後一年」)
その他
表示(「いいえ」)
アルコール飲んでもいい(20) #はい!
アルコール飲んでもいい(18) #いいえ
一番大切なデータ構造は「辞書」と言います:
鈴木さん=辞書()
鈴木さん・名前=「鈴木」
鈴木さん・年齢=12
鈴木さん【「名前」】
あ=配列(1、2、3)
表示(あ【0】)
墨付きかっこで添字表記法する事が出来る
#ファイル名:"私のモジュール.tnk"
関数、フィボナッチ(あ)
もし、あ<=1
返す、1
その他
返す、フィボナッチ(あー1)+フィボナッチ(あー2)
#ファイル名:"私のアプリ.tnk"
導入、私のモジュール
表示(私のモジュール・フィボナッチ(20)) #6765
表示
- 表示(表示したい事、他の事、…)
データ構造
- 辞書(キー:バリュー、キー2:バリュー2、…)→新しい辞書を作る
- それぞれ(辞書、関数)→辞書のアイテムそれぞれ
- 長さ(配列)→配列の長さを返す
- 配列調べ(配列、何番目)→○番目のバリュー
- 辞書調べ(辞書、キー)→バリュー
- 配列更新
数学:
- 足す
- 引く
- 割り算
- 掛ける
- イコール
- 比べ
システム:
- ファイル読む
- 評価
- エキステンション
cd build/
make tanuki
time ./tanuki ../example/codingquestions.tnk
結果:./tanuki ../example/codingquestions.tnk 0.86s user 0.01s system 99% cpu 0.867 total
Nativeエキステンションのテストする方法:
cd build/
make tanuki tanuki_dynamic
./tanuki ../example/importDynamicLibrary.tnk
希望の機能:
- 漢字で書ける数字literal:「一五〇〇〇」
- expression parenthesis with line wrapping (currently an underscore must be placed before a pair of parenthesis and no new lines are allowed in the middle of a statement)
- improve system import search path and unify with command line search path.
- infix mod operator 今は関数のみ
- 文字列の中のエスケープコード。escape codes in strings
- multithreading
- network utilities
-変数名
やるべきリファクタリング:
- Lexer Postprocessor refactoring.
- asio (ピカ狸のGUIのためだけ) このライブラリはgit submoduleに入っていません. 「 https://think-async.com/ 」からインストール出来ます。
- npmやnodeなど…
- nhlohman json
OSXの場合は:(最近OSXのthink-asyncのbrewに入っているパッケージは問題ありそうですからソースからインストールした方はいい)
brew tap nlohmann/json
brew install nlohmann-json
brew install cmake
# https://think-async.com/Asio/Download.html からダウンロードしてください。
cd ~/Downloads/asio-1.12.2
./configure --without-boost
make
sudo make install
run tests in docker
docker build . -t tanuki && docker run tanuki /code/build/tanuki_test
build tanukiweb
docker build -t tanuki-web -f ./docker/Dockerfile-tanukiweb ./docker
docker run -p 8080:80 tanuki-web