2010-05-27 11 views
2

Je suis très nouveau à Flex/Bison, donc c'est très question navie.
Pardonnez-moi si c'est le cas. Peut ressembler à une question de devoirs - mais je dois mettre en œuvre un projet basé sur le concept ci-dessous.Analyseur d'entrée de Bison - question de base sur le grammaire facultatif et interprétation d'entrée

Ma question est liée à deux parties,
Question 1
parseur Bison, Comment puis-je fournir des règles pour l'entrée en option.

Comme, je dois analyser le statment
Exemple:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana' 

Ici, le jeton de rapport peut être en option. De même, si j'ai plusieurs jetons optionnels, alors comment puis-je fournir le grammer dans l'analyseur pour le même?

Mon code ressemble,

programme de démarrage

% de
programme: TK_COUNTRY TK_IDENTIFIER TK_STATE TK_IDENTIFIER TK_POPULATION TK_IDENTIFIER ...
où tous les jetons sont définis dans le lexer. Comme il y a beaucoup de jetons qui sont optionnels, si j'utilise "|" alors il y aura beaucoup de différentes manières de combinaison d'entrée possible.

Question 2
Il y a de bonnes chances que le commentaire pourrait avoir des citations dans le cadre de l'entrée, j'ai donc ajouté un jeton -tag utilisateur peut fournir d'interpréter le même,

Exemple:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana$'s population' -tag=$ 

maintenant, je dois réinterpréter l 'Indiana $ comme l'Indiana depuis -tag=$.

Veuillez fournir toute contribution ou tout document connexe pour comprendre ces sujets. Merci de votre participation à l'avance.

Répondre

1

Q1: Je suppose que nous avons 4 jetons possibles: NOM, '-', '=' et VALEUR

Ensuite, la grammaire pourrait ressembler à ceci:

attrs: 
    attr attrs 
    | attr 
    ; 

attr: 
    '-' NAME '=' VALUE 
    ; 

Notez que, contrairement à vous faire des noms d'attributs spécifiques des jetons distingués, il n'y a aucun moyen de dire "Nous devons avoir le pays, l'état et la population, mais le ratio est facultatif." Ce serait la tâche de la partie du programme qui analyse les données produites par l'analyseur. Q2: Je comprends ceci, que vous pensez changer le fonctionnement de l'analyse lexicale pendant que l'analyseur fonctionne. Ce n'est pas une bonne idée, du moins pas pour un débutant. Avez-vous déjà commencé à penser à l'analyse lexicale, par opposition à l'analyse syntaxique?

+0

Merci pour la contribution et suggestion !!! –