From 605d9f07bed7b94721ff880ccc1a10c482c230eb Mon Sep 17 00:00:00 2001 From: Lolo Iccl Date: Fri, 22 Mar 2019 19:52:08 +0900 Subject: [PATCH] add Japanese readme draft (subpart) --- README_JP.rst | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 README_JP.rst diff --git a/README_JP.rst b/README_JP.rst new file mode 100644 index 0000000..1501863 --- /dev/null +++ b/README_JP.rst @@ -0,0 +1,34 @@ +####### + nimly +####### + +nimly はコンパイラ言語 Nim のための、 +lexer generator である niml と, parser generator である nimy からなる +ライブラリです。 + +面白い点 +======== +nimly では Nim の強力で自由度の高いマクロとコンパイル時計算を利用し、 +Nim の言語機能に密着した方法での lexer と parser の生成を行っています。 + +マクロによる文法の拡張 +---------------------- +Nim のマクロはコンパイラによるソースのパースの後、 +指定されている部分の AST を入力とし、その部分を +コンパイル時関数実行によって得られた別の AST で置き換える機能です。 + +この機能により、niml では lex の記法に似た記法で +生成する lexer を記述することができ、 +また nimy では BNF に似た記法により parser を記述する事ができるように +しています。 + +オートマトンのコンパイル時計算 +------------------------------ +Nim は vm を使用したコンパイル時関数実行の機能を有しています。 + +niml, nimy は共に、Nim のコンパイル時計算の機能を使用しており、 +上記の方法で生成した AST はオートマトンをコンパイル時に +計算、生成するコードになっています。 +これにより、lexer, parser の生成を実行時から切り離すことと、 +lexer, parser を Nim によって生成すること、また、それらを利用するコード +との円滑な接続、例えばオートマトン生成前の型検査等の両立を可能にしています。