La recherche d'une définition claire de ce qu'est un “tokenizer”, “parser” et “lexers” sont et comment ils sont liés les uns aux autres et utilisés?
Je suis à la recherche d'une définition claire de ce qu'est un "tokenizer", "parser" et "lexer" sont et comment ils sont liés les uns aux autres (par exemple, un analyseur d'utiliser un générateur de jetons ou vice-versa)? J'ai besoin de créer un programme en c/h fichiers source pour extraire des données de déclaration et de définitions.
J'ai été à la recherche d'exemples et peuvent trouver des infos, mais j'ai vraiment du mal à comprendre les concepts sous-jacents comme les règles de grammaire, d'analyser des arbres et de l'arbre de syntaxe abstraite et la manière dont ils sont liés les uns aux autres. Finalement, ces concepts doivent être stockés dans un programme, mais 1) que font-ils ressembler, 2) existe-il des communes des implémentations.
J'ai été à la recherche sur Wikipedia sur ces sujets et des programmes comme Lex et Yacc, mais n'ayant jamais passé par un compilateur de classe (EE majeur), je trouve qu'il est difficile de comprendre pleinement ce qui se passe.
Vous devez vous connecter pour publier un commentaire.
Un tokenizer les ruptures de flux de texte en jetons, généralement par la recherche d'espaces (tabulations, espaces, de nouvelles lignes).
Un analyseur lexical est essentiellement un générateur de jetons, mais il s'attache supplément de contexte pour les jetons -- ce jeton est un nombre, ce jeton est un littéral de chaîne, ce jeton est un opérateur d'égalité.
Un analyseur prend le flux de jetons à partir de l'analyseur lexical et il se transforme en un arbre de syntaxe abstraite représentant l' (généralement) programme représenté par le texte original.
Dernière, j'ai vérifié, le meilleur livre sur le sujet a été "Compilateurs: Principes, Techniques et Outils" habituellement juste connu comme "Le Dragon Book".
parser
outokenizer
?Exemple:
Un analyseur lexical ou tokeniser va la diviser en jetons de 'int', 'x', '=', '1', ';'.
Un analyseur de prendre ces jetons et de les utiliser pour comprendre d'une certaine façon:
Je dirais qu'un analyseur lexical et un générateur de jetons sont fondamentalement la même chose, et qu'ils smash le texte en ses éléments constitutifs (les "jetons"). L'analyseur, puis interprète les jetons à l'aide d'une grammaire.
Je n'aurais pas trop accroché sur la précision terminologique d'utilisation si - souvent, les gens utilisent 'analyse' pour décrire toute action de l'interprétation d'un morceau de texte.
(ajoutant les réponses données)