LINUX.ORG.RU

История изменений

Исправление Begemoth, (текущая версия) :

Кстати, в дополнение к совету tailgunner'а, если конкретный синтаксис DSL'я для тебя не принципиален, то можно сделать так, чтобы твоя спецификация была корректной программой, скажем на Python:

view('foo_view', 
  { 'name': "My field 1", 'type': string, 'from': 'f8', 'id': 500 },
  { 'name': "My field 2", 'type': int64, 'from': 'f8 * f32', 'id': 900 },
  { 'name': "Array field %i", 'type': arrayof(string), 'from': 'arr64', 'ids': 1000 })

В этом случае тебе ничего парсить не придётся, а только определить функции (view и т.д.), которые будут генерировать нужные структуры данных, и загружать спецификацию exec'ом.

Исходная версия Begemoth, :

Кстати, в дополнение к совету tailgunner'а, если конкретный синтаксис DSL'я для тебя не принципиален, то можно сделать так, чтобы твоя спецификация была корректной программой, скажем на Python:

view('foo_view', 
  { name: "My field 1", type: string, from: f8, id: 500 },
  { name: "My field 2", type: int64, from: f8 * f32, id: 900 },
  { name: "Array field %i", type: string[], from: arr64, ids: 1000 })

В этом случае тебе ничего парсить не придётся, а только определить функции (view и т.д.), которые будут генерировать нужные структуры данных, и загружать спецификацию exec'ом.