0

外部プログラムを呼び出さずにCoffeeScript内のプログラム(文字列として提供される)のCoffeeScript解析ツリーを計算する方法はありますか?

たとえば、CoffeeScript プログラム内に文字列 'square=(n)->n*n' があるとします。square.coffeeこの文字列をファイルに保存してコマンドラインで呼び出すのと同じ出力を取得したいのですが、coffee -n square.coffee別のプロセスを作成する必要はありません。

Block
  Assign
    Value "square"
    Code
      Param "n"
      Block
        Op *
          Value "n"
          Value "n"

結果のデータ構造を解釈する方法を説明するドキュメントへのリンクをソリューションと共に提供してください。

4

1 に答える 1

1

ソースを見てください。-nフラグが呼び出されます(require 'coffee-script).nodes。結果は、grammar.coffeeに対応し、 nodes.coffeeで解釈される構文ツリーです。

したがって、この:

(require 'coffee-script').nodes 'square = (n)->n*n'

構文ツリーが表示されます。印刷する前に、そのメソッドを使用してCLItoStringと同じ出力を取得できます。coffee

ファイルシステムの操作には、ノードreadFileまたはライブラリreadFileSyncから使用するだけです。fs

{readFileSync} = require 'fs'
{nodes}        = require 'coffee-script'

nodes readFileSync('squares.coffee').toString()
于 2015-05-28T01:51:47.413 に答える