用于Python样式缩进的PEG
您将如何在以下任何可以处理Python / Haskell / CoffeScript样式缩进的分析器生成器(PEG.js,Citrus,Treetop)中编写解析表达式语法:
尚未存在的编程语言的示例:
square x =
x * x
cube x =
x * square x
fib n =
if n <= 1
0
else
fib(n - 2) + fib(n - 1) # some cheating allowed here with brackets
更新:
不要尝试为上面的例子编写解释器。我只对缩进问题感兴趣。另一个例子可能是解析以下内容:
foo
bar = 1
baz = 2
tap
zap = 3
# should yield (ruby style hashmap):
# {:foo => { :bar => 1, :baz => 2}, :tap => { :zap => 3 } }
没有找到相关结果
已邀请:
5 个回复
钾涎净介
是一堆缩进。 indent()返回一个缩进标记数组,start()展开数组以使解析器的行为有点像流。 peg.js为文本生成:
这些结果:
这个解析器甚至可以捕获坏的缩进。
际恃啸称桅
青董据零
敦肌
这是一个小测试驱动程序,所以你可以轻松地尝试:
版萍层分