1
0

More than 5 years have passed since last update.

"Writing An Interpreter In Go " を JavaScriptで実装してみる その1 Lexer

Last updated at Posted at 2019-08-11

なんとなく 個人的お盆休みの課題として
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に投稿しようと思う

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0