Как вы напишете грамматику выражения Parsing в любом из следующих генераторов Parser (PEG.js, Citrus, Treetop), который может обрабатывать отступы стиля Python/Haskell/CoffeScript:
Примеры еще не существующего языка программирования:
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
Update: Не пытайтесь написать интерпретатор для приведенных выше примеров. Меня интересует проблема с отступом. Другим примером может быть синтаксический анализ следующего:
foo
bar = 1
baz = 2
tap
zap = 3
# should yield (ruby style hashmap):
# {:foo => { :bar => 1, :baz => 2}, :tap => { :zap => 3 } }