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