我正試圖學習Flex & Bison。我已閱讀材料,並理解它在理論層面的工作原理。然而,我似乎甚至沒有實現最基本的東西,而沒有打到心理障礙。 (注意:我沒有采取任何編譯器課程或類似的東西......這是我第一次接觸到這些東西)。我想,一旦我看到這個超級基本的東西被實現,我就可以更容易地繼續前進和理解。使用Flex&Bison
基本上,我所要做的就是編寫一個程序,看到type my_type /// some text
將調用my_type的函數「set_text」,並將文本設置爲該註釋之後的內容。相反,我的Bison語法將會調用函數my_type.set_text(some text);
我意識到如果不使用Flex和Bison,我可以輕鬆完成這個任務,但重點在於學習。
我已經有了正確設置的文件......我需要實現的是令牌傳遞(來自Flex)和採取的行動(來自Bison)。
我的Flex令牌傳遞至今:
"\/"{3} { return COMMENT; }
我野牛令牌到目前爲止
%token COMMENT
抓住,這就是認真所有我可以拿出。我知道我還需要什麼......我無法弄清楚如何去做。我知道我需要:
一)通過類型和my_type的東西
b)將拿出一個「規則」在野牛來處理這些東西,調用該函數正確的功能
任何幫助嗎?我已經離開了嗎?
UPDATE(關於如何做到這一點的進一步思考): 也許我的野牛文件應該包括像
commented_variable: {($2).set_text($4);}
IDENTIFIER NAME COMMENT COMMENT_TEXT
的規則。因此我的Flex文件需要通過它的令牌?我在正確的軌道上嗎?
另外,我很抱歉,如果這似乎是錯誤的論壇中發佈此我找不到任何網站更適合。讓我知道如果你認爲另一個堆棧交換網站會是一個更好的選擇! –