小编Nas*_*ges的帖子

用于Python样式缩进的PEG

您将如何在以下任何可以处理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)

syntax parsing language-design peg treetop

32
推荐指数
3
解决办法
5083
查看次数

带块的常量声明

最近我在研究Firefox Add-on Builder SDK源代码,并偶然发现了这样的常量声明:

const { getCodeForKey, toJSON } = require("../../keyboard/utils");
Run Code Online (Sandbox Code Playgroud)

我可以找到有关CommonJS模块的信息,但是这项任务的部分内容会让我感到困惑,因为它必须是特定于语言的,而且我无法对其进行任何操作.

有人能指出我的一些规范/草案,解释这里发生了什么?

javascript gecko spidermonkey destructuring variable-assignment

7
推荐指数
1
解决办法
782
查看次数

安装rails时出错,无法构建gem原生扩展

我知道有几个主题,但我创建一个新主题的原因是它仍然不适合我...

所以这是我的配置:

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上运行.

提前感谢您的回答!

ruby debian makefile ruby-on-rails

2
推荐指数
1
解决办法
4188
查看次数