Я пытаюсь сделать корректор текста sintax для класса моих компиляторов. Идея такова: у меня есть некоторые правила, которые присущи языку (в моем случае, португальцу), например «Действительная фраза - SUBJECT VERB ADJECTIVE», как в «Ruby is great».Как создать парсер, который токенизирует список слов, взятых из файла?
Хорошо, поэтому сначала я должен сделать токенизацию ввода «Рубин большой». Поэтому у меня есть текстовый файл «глаголы», с множеством глаголов, один за другим. Тогда у меня есть один текст «прилагательные», один «местоимение» и т.д.
Я пытаюсь использовать Ragel создать парсер, но я не знаю, как я мог бы сделать что-то вроде:
%%{
machine test;
subject = <open-the-subjects-file-and-accept-each-one-of-them>;
verb = <open-the-verbs-file-and-accept-each-one-of-them>;
adjective = <open-the-adjective-file-and-accept-each-one-of-them>;
main = subject verb adjective @ { print "Valid phrase!" } ;
}%%
Я посмотрел на ANTLR, Lex/Yacc, Ragel и т. Д. Но не смог найти тот, который, казалось, решил эту проблему. Единственный способ сделать это, о котором я мог думать, - это предварительно обработать входной файл Ragel, чтобы моя программа читала файл и записывала его содержимое в нужном месте. Но мне тоже не нравится это решение.
Кто-нибудь знает, как я могу это сделать? Нет проблем, если это не с Рагелем, я просто хочу решить эту проблему. Я бы хотел использовать Ruby или Python, но это тоже не обязательно.
Спасибо.