Как перепроектировать форматы двоичного файла в целях совместимости

Грамматика имеет левую рекурсию: variable -> component -> indexed -> variable. PetitParser использует грамматики синтаксического анализа (PEG) , которые не могут обрабатывать левую рекурсию. Парсер PEG всегда выбирает левый вариант, пока не найдет совпадение. В этом случае он не найдет совпадение из-за левой рекурсии. Чтобы это сработало, нужно сначала устранить левую рекурсию. Устранение всех левых рекурсий может быть более сложным, так как вы также получите один через field после устранения первого. Например, вы можете написать грамматику следующим образом, чтобы сделать левую рекурсию более очевидной:

variable = (variable , $[ , blah , $]) | (variable , $. , identifier) | identifier

Если у вас есть левая рекурсия, например:

A  -> A a |  b

, вы можете устранить ее следующим образом ( e - пустой анализатор)

A  -> b A'
A' -> a A' | e

Вам нужно будет применить это дважды, чтобы избавиться от рекурсии. В качестве альтернативы вы можете выбрать упрощение грамматики, если вы не хотите анализировать все возможные комбинации идентификаторов.

7
задан Sylverdrag 3 February 2009 в 13:41
поделиться

3 ответа

Конечно, обратное проектирование возможно, но без спецификаций формата это потребует много работы. Я бы посмотрел на окупаемость усилий по поддержке этих «редко запрашиваемых, очень дорогих» форматов. Возможно, вам будет лучше потратить эти усилия на улучшение основных функций вашего приложения.

Другой аспект - связаться с компаниями, использующими эти форматы, объяснить свою цель, объяснить, что это помогает их продукту, и если они не считают вас конкуренция, в которой они могут быть готовы помочь.

5
ответ дан 7 December 2019 в 10:08
поделиться

Возможно, Вы могли выбрать более дешевое приложение, которое имеет функции импорта QuarkXPress. Например, InDesign должен смочь прочитать документы Кварка. Затем используйте приложение импорта для экспорта в любой формат, в котором Вы нуждаетесь - возможно, со справкой плагина.

0
ответ дан 7 December 2019 в 10:08
поделиться

Я знаю, что Вы хотите перепроектировать их - но так как они могут быть форматами файлов уместности, Вы смотрите на очень крутую кривую, пытающуюся декодировать их...

У некоторых (поскольку я записал некоторые propritety форматы для брюшного использования прежде) есть определенные методы и объекты, записанные в них, которые служат некоторому альтернативному процессу, чем само содержание файла. Материал, который доказал бы новый файл, недопустим.

Просто мои 2 цента и я не являются никаким адвокатом =>

1
ответ дан 7 December 2019 в 10:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: