2010-01-18 3 views
3

Ma grammaire de jouets C# -ish a maintenant ses premiers conflits réduire-réduire! Je suis tellement fier de moi.Comment puis-je dire à Bison que je m'attends aussi à des conflits réduire-réduire?

Cela me semble tout de même correct (je suis passé à un parser GLR pour l'occasion). Le problème est, alors que je sais que la directive %expect peut fermer Bison sur les conflits de décalage/réduction, je ne peux pas trouver l'équivalent pour réduire/réduire les conflits. Alors que dois-je utiliser pour le rendre silencieux sur mon 3 shift/réduit et mon 2 réduire/réduit?

+0

Si vous le pouvez, prenez le livre Dragon « Compilateurs: principes, Outils & Techniques "par Aho et al et" Mise en œuvre du compilateur moderne en C " –

+0

Eh bien, le Dragon Book est un peu cher pour mon statut d'étudiant pauvre. :/Surtout que je le fais purement comme un passe-temps, et je n'aurai certainement pas de cours sur les compilateurs avant plusieurs années. – zneak

Répondre

4

De la documentation Bison GNU, found here

Pour LALR normale (1) parseurs, Réduire/réduire les conflits sont plus graves et doivent être entièrement éliminés . Bison indiquera toujours réduire/réduire les conflits pour ces analyseurs syntaxiques . Avec les analyseurs GLR, cependant, les deux types de conflits sont routiniers: ; sinon, il ne serait pas nécessaire de utiliser l'analyse GLR. Par conséquent, il est également possible de spécifier un nombre prévu de réduire/réduire les conflits dans GLR parseurs, en utilisant la déclaration:

%expect-rr n 
+1

Aww, dammit. Mon googlefu m'a conduit à http://dinosaur.compilertools.net/bison/bison_6.html#SEC54 à la place, où aucune mention de cela n'a été faite. Merci. – zneak

Questions connexes