Je cherche un moyen d'analyser juste une partie particulière d'un fichier. Par exemple, permet de voir:Jeton Bison Flex pour chaque jeton non défini lu
if {$cpf_step == "pre_restruct"} {
create_power_domain -name domain_GPU_SW \
-shutoff_condition "!$mali_pso_condition_pin" \
-instances "$GPU_SW_instances_list"
} else {
create_power_domain -name domain_GPU_SW \
-shutoff_condition "!$mali_pso_condition_pin"
}
Je suis intéressé par les commandes create_power_domain. J'ai une règle avec le jeton différent utilisé dedans. Voici la règle que j'utilise [EDIT] Bien sûr, il y a des choses avant et après cet extrait aswell que d'autres create_power_domain commandes que je suis intéressé par l'analyse syntaxique [/ EDIT]
file :list_of_statement
;
list_of_statement: statement
| list_of_statement statement
;
statement: power_domain
| T_EVERY_OTHER_THING_I_READ
;
power_domain: K_CREATE_POWERDOMAIN K_NAME K_IDENTIFIER options_list
Maintenant, comme vous pouvez le comprendre, je veux vérifier seulement que chaque domaine de puissance correspond à la syntaxe et je ne veux pas m'occuper de tout le reste.
Dans mon tokenizer flex, j'ai essayé
.* {return T_EVERY_OTHER_THING_I_READ; }
, mais je me suis souvenu que Lex essaie de trouver la plus longue correspondance expression régulière qui implique que tout va maintenant être un jeton T_EVERY_OTHER_THING_I_READ et je ne peut pas trouver mon K_CREATE_POWERDOMAIN par exemple.
Ma question est alors comment puis-je ignorer tout ce qui ne fait pas partie de la règle qui m'intéresse?
Si vous avez d'autres questions, n'hésitez pas à demander.
Merci
Cela semble faire l'affaire. Je vous remercie. Maintenant, je ne peux que prendre en compte ce que je suis intéressé, je dois juste trouver comment ignorer quelque chose comme un K_NAME en dehors d'un power_domain. Pour l'instant j'ai choisi de l'ajouter comme 'statement: power_domain \t | list_of_identifier \t | K_NAME' mais je vais essayer de trouver simplement comment définir chaque token à un T_EVERY_OTHER_THING_I_READ si je n'ai pas trouvé de K_CREATE_POWERDOMAIN avant! Merci encore – djfoxmccloud
Je retourne sur mon tokenizer et il semble en fait que cette règle ne fonctionne pas bien avec mes autres jetons. Trop d'entre eux sont classés comme T_EVERY_OTHER_THING_I_READ – djfoxmccloud