Je suis en train de faire un correcteur de texte SINTAX pour la classe de mes compilateurs. L'idée est la suivante: j'ai des règles, qui sont inhérentes à la langue (dans mon cas, le portugais), comme « Une phrase valide est soumise VERB ADJECTIVE », comme dans « Ruby est grande ».Comment créer un analyseur qui symbolise une liste de mots extraits d'un fichier?
Ok, donc je dois d'abord tokenizer l'entrée « Ruby est grande ». J'ai donc un fichier texte "verbes", avec beaucoup de verbes, un par ligne. Ensuite, j'ai un texte « adjectifs », un « pronoms », etc.
Je suis en train d'utiliser Ragel pour créer un analyseur, mais je ne sais pas comment je pourrais faire quelque chose comme:
%%{
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!" } ;
}%%
J'ai regardé ANTLR, Lex/Yacc, Ragel, etc. Mais je n'ai pas pu trouver celui qui semblait résoudre ce problème. La seule façon de le faire à laquelle je pouvais penser était de pré-traiter le fichier d'entrée de Ragel, afin que mon programme lise le fichier et écrit son contenu au bon endroit. Mais je n'aime pas non plus cette solution.
Est-ce que quelqu'un sait comment je pourrais le faire? Il n'y a pas de problème si ce n'est pas avec Ragel, je veux juste résoudre ce problème. Je voudrais utiliser Ruby ou Python, mais ce n'est pas vraiment nécessaire non plus.
Merci.