В чем разница между lex/yacc и fslex/fsyacc?

Я изучаю F#, потому что я хотел бы написать лексер и парсер. У меня есть небольшой опыт работы с этим типом обработки, но мне действительно нужно изучить его так же хорошо, как F#.

Достаточно ли изучать lex и yacc при изучении функций лексизации / синтаксического анализа в F#?

Или есть некоторые различия, которые означают, что код для lex / yacc не будет работать с fslex и fsyacc?

2 ответа

Решение

Лично я нашел эти учебные пособия по OcamlLex и OcamlYacc отличными ресурсами для начала - легко понять, и вы можете перевести большинство всего в этих учебниках для FsLex/FsYacc почти дословно.

Что ж, с помощью lex и yacc вы помещаете код C/C++ в "действия", тогда как с помощью fslex и fsyacc вы помещаете туда код F#, но я полагаю, вы знаете это?

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

Другие вопросы по тегам