10000 GitHub - kayleema/tanuki: プログラミング言語
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

kayleema/tanuki

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

狸語 プログラミング言語

Core Tests

「git clone」してから「git submodule」のセットアップ

  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

「git submodule」ですでに導入されている依存ライブラリ

  • fakeit (git submodule に入っている)
  • googletest (git submodule に入っている)
  • websocketpp (git submodule に入っている)

OSXの場合は:

  xcode-select --install
  brew install cmake

Linuxの場合は:

  apt-get install -y build-essential git cmake autoconf libtool pkg-config libasio-dev nlohmann-json3-dev

呼び方

  ./tanuki <ファイル名.tnk>

説明メッセージを表示:

  ./tanuki -h

インストールすると、「狸」のaliasを作成されるから「tanuki」の代わりに「狸」でもかけます。

IDEとのインテグレーション(シンタックスハイライトとか)

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.

(ピカ狸のGUIの場合だけ)必要なライブラリ

  • asio (ピカ狸のGUIのためだけ) このライブラリはgit submoduleに入っていません. 「 https://think-async.com/ 」からインストール出来ます。
  • npmやnodeなど…
  • nhlohman json

(ピカ狸のGUIの場合だけ)簡単ビルド環境セットアップおすすめ:

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

Docker

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

About

プログラミング言語

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  
0