なんとなく 個人的お盆休みの課題として
Writing An Interpreter In Goという本を読み始めた。
内容としてはMonkeyという言語のインタプリタをGo言語で実装するという内容である
ページ数としては200ページほどで、軽すぎず、重すぎず丁度いい内容。
Lexer・Parser・Evaluaterの流れですすんでいく。
ただ写経するだけではつまらないのでJavaScriptで実装し直してみている。
npmモジュールにMonkeyの日本語訳である"saru"というレポジトリで公開し始めた
[npm]
https://www.npmjs.com/package/saru
[code]
https://github.com/freddiefujiwara/saru
インストール方法はこちら
npm i -g saru
使い方はこちら
$ saru
Hello fumikazu! This is the Monkey programming language!
Feel free to type in commands
* Please type 'bye' if you want to exit
>>>
サンプル
>>> let me know
Token { type: 'LET', literal: 'let' }
Token { type: 'IDENT', literal: 'me' }
Token { type: 'IDENT', literal: 'know' }
>>> let str = "string";
Token { type: 'LET', literal: 'let' }
Token { type: 'IDENT', literal: 'str' }
Token { type: '=', literal: '=' }
Token { type: 'STRING', literal: 'string' }
Token { type: ';', literal: ';' }
>>> let i = 10;
Token { type: 'LET', literal: 'let' }
Token { type: 'IDENT', literal: 'i' }
Token { type: '=', literal: '=' }
Token { type: 'INT', literal: '10' }
Token { type: ';', literal: ';' }
>>> !@
Token { type: '!', literal: '!' }
Token { type: 'ILLEGAL', literal: '@' }
また、始めて jestを使ってみた。
まだまだLexer部分しか作ってないが今後Parser部分やEvaluator部分も作ったら
Qiitaに投稿しようと思う