Вопрос

Я обдумываю идею реализации XML-транслятора с использованием генератора компилятора на основе W3C. XML 1.1 спецификация, которая включает полную грамматику EBNF.

Точнее, я планирую использовать Ци-YACC потому что я хочу изучить этот инструмент.Это будет мой первый опыт использования любого компилятора-компилятора.

Первый вид перевода, который я планирую реализовать, очень прост:XML в S-EXPR.Дальше я планирую обобщить своего переводчика, но суть моего вопроса не в этом.

Ожидаете ли вы каких-либо серьезных подводных камней в этом проекте? Я читал, что перевод XML с использованием его EBNF плохая идея.Интересно, почему.И это не значит, что в языке Qi уже был синтаксический анализатор XML, поэтому я определенно не собираюсь здесь изобретать велосипед.

Это было полезно?

Решение

Я не понимаю, почему для анализа XML необходим контекст.

Но QiYacc может использовать контекст, используя глобальные переменные.Было бы чище, если бы вы могли пройти государство, S, в анализаторе, например,или что-то вроде того.В Ци этого нет, но я планирую реализовать такую ​​возможность для Шена.

Так что это можно было сделать.

/Стефан

Другие советы

Я ничего не знаю о Qiyacc, однако перевод EBNF XML в рекурсивный спуск (RD) сияет более или менее прост. Просто нужно помнить тот факт, что есть места, где некоторые небольшие изменения в грамматике могут оказать большое влияние на анализатор. Это связано с тем, что грамматики написаны с краткостью и ясностью, а не пытаются избежать преследования правил.

Я сделал что -то подобное один раз в C ++, написав грамматику XML как набор типов. Вы можете увидеть статью, которую я написал на ней Кодовый проект. Анкет Те же основные принципы могут применяться к любому языку.

Я также предложил бы вам посмотреть на GEAG Grammarmars. Они распространяются на EBNF, позволяя вам представить утверждения по ширине нулевой ширины, и являются отличным способом увеличить грамматику EBNF для анализатора.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top