【问题标题】:Lambda expressions in PEG.jsPEG.js 中的 Lambda 表达式
【发布时间】:2014-01-17 01:38:15
【问题描述】:

我对 lambda 表达式有 PEG grammar 问题,如果我使用语法,它们就可以工作:

x:{y:{x+y}}(20)(30)

相当于

(function(x) { return function(y) { return x+y; }; })(20)(30);

但这不起作用

f:{f(10)}(x:{x*x})

相当于:

(function(f) { return f(10); })(function(x) { return x*x; })

是否可以使第二个函数与 PEG.js 一起使用?

【问题讨论】:

  • 从您链接的文件的第一行看来,答案是否定的......

标签: javascript lambda peg pegjs


【解决方案1】:

online grammar parser 上经过反复试验后,我发现这是可行的:

f:{f}(x:{x*x})(10)

【讨论】:

  • 这是因为它从左到右先创建标识函数,然后将函数传递给该函数,然后执行该函数。是否可以让它像第一次执行参数的正常评估一样从右到左工作?
  • 这似乎是您使用的语法的限制,但我不知道答案。也许如果您修改语法或创建自己的语法。我以前从未使用过 PEGjs,所以我无法为您提供更多帮助......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 2017-10-02
相关资源
最近更新 更多