您将如何在以下任何可以处理Python/Haskell/CoffeScript样式缩进的分析器生成器(PEG.js,Citrus,Treetop)中编写解析表达式语法:
尚未存在的编程语言的示例:
square x =
x * x
Run Code Online (Sandbox Code Playgroud)
cube x =
x * square x
Run Code Online (Sandbox Code Playgroud)
fib n =
if n <= 1
0
else
fib(n - 2) + fib(n - 1) # some cheating allowed here with brackets
Run Code Online (Sandbox Code Playgroud)
更新: 不要尝试为上面的示例编写解释器.我只对缩进问题感兴趣.另一个例子可能是解析以下内容:
foo
bar = 1
baz = 2
tap
zap = 3
# should yield (ruby style hashmap):
# {:foo => { :bar => 1, :baz => 2}, :tap => { :zap => …Run Code Online (Sandbox Code Playgroud) 最近我在研究Firefox Add-on Builder SDK源代码,并偶然发现了这样的常量声明:
const { getCodeForKey, toJSON } = require("../../keyboard/utils");
Run Code Online (Sandbox Code Playgroud)
我可以找到有关CommonJS模块的信息,但是这项任务的部分内容会让我感到困惑,因为它必须是特定于语言的,而且我无法对其进行任何操作.
有人能指出我的一些规范/草案,解释这里发生了什么?
javascript gecko spidermonkey destructuring variable-assignment
我知道有几个主题,但我创建一个新主题的原因是它仍然不适合我...
所以这是我的配置:
ruby -v : 1.8.7
gem -v : 1.8.21
Run Code Online (Sandbox Code Playgroud)
当我试图做
sudo gem1.8 install rails
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
Building native extensions. This could take a while...
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb
creating Makefile
make
sh: make: not found
Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/json-1.6.6 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/json-1.6.6/ext/json/ext/generator/gem_make.out
Run Code Online (Sandbox Code Playgroud)
我在Debian 6.0.4 Squeeze上运行.
提前感谢您的回答!
debian ×1
gecko ×1
javascript ×1
makefile ×1
parsing ×1
peg ×1
ruby ×1
spidermonkey ×1
syntax ×1
treetop ×1