используя функции в коде, сгенерированном lex и yacc

Я хочу написать минималистичный синтаксический анализатор XML для моего приложения для составления расписания. Я не хочу использовать какие-либо библиотеки или синтаксические анализаторы, которые будут поддерживать синтаксический анализ XML, потому что они менее эффективны для моего использования (поскольку мне нужно распознавать только несколько тегов). Поэтому я решил написать парсер, используя lex и yacc. Есть ли способ, которым я могу использовать функции в файле .h, созданном lex и yacc, в моем коде напрямую, а не писать код приложения в самом yacc.


person Aman Deep Gautam    schedule 14.05.2012    source источник


Ответы (1)


Функции, экспортируемые вашими программами, сгенерированными lex и yacc, минимальны. Анализатор вызывается вызовом yyparse. Он вызывает yylex в лексере. Все остальное может быть снаружи.

Удобно и принято иметь некоторые подпрограммы поддержки синтаксического анализа в самих файлах lex и yacc (хелперы, которые вызываются действиями лексирования и синтаксического анализа, а не чем-либо еще). Но не логика приложения. (За исключением очень тривиальных примеров из учебника для Yacc.)

person Kaz    schedule 17.05.2012