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 回答