2012-12-16 57 views
0

如果循環結構在* .Y文件中定義爲:野牛C代碼分配

WHILE '(' expr ')' stmt ENDWHILE { //to be written here loop structure handling 
- put WHILE into structure stack } 

然後 - 但我不得不使用ENDWHILE - 我怎麼可以配合C代碼ENDWHILE檢查有沒有結構之間的重疊?

+0

我不明白你的問題。 – melpomene

+0

附加的c代碼將在找到規定的結構時執行 - 即在'WHILE'時執行。但是當我的程序達到'ENDWHILE'時,我怎麼能附加代碼來執行? – Steve

+0

實際上,當你發現整個事物時,你的代碼將被執行,包括所有'WHILE','expr'和'ENDWHILE'。 – melpomene

回答

1

只有當所有先前的標記和規則已被識別(以及任何代碼執行)時,纔會執行示例中花括號中的代碼。

如果你有嵌套的WHILE/ENDWHILE循環,內部的循環將在外部循環之前完成。

+0

因此,沒有必要檢查任何重疊的循環,Bison會處理它?我對Bison很熟悉,在我的知識中有一些差距。謝謝你的幫助。 – Steve

+0

基本上,是的。 –