說我有一個代碼具有以下形式。一些彈性/野牛問題
display <<"hello">> (number1) (number2) (number3) {
a = 1;
b = 2;
...
}
注意這只是一個例子,雖然是一個醜陋的例子,不過,這只是我想去做的exageration。 number1,number2,number3是數字,顯示將是一種操作符,後跟一個包含變量賦值的{}之間的塊,並以特殊方式打印整個事物。如上所述,只是一個例子。
我的問題是......說這個語法,display <<str>>()()() {}
表格只與「顯示」關鍵字一起使用,並且從未使用過。假設< <和>>通常是運營商。我想知道......怎麼可能告訴野牛/ flex在這種情況下< <和>>不是用作操作符,而只是屬於「顯示」語法的分隔符?並且,如何正確提取<和<和>>之間的數據,然後使用不同的,特定的語法將整個塊解析爲{}之間的塊。
例如,如果我有:
display <<"hello">> (1) (5) (8) {
a = 1;
b = 8 * 273 + 40;
}
然後,我會想撥打電話這樣的:
handle_display_operator(szStr, num1, num2, num3)
// here szStr contains "hello", num1 = 1, num2 = 5, num3 = 8
調用該函數後,我需要解析成塊。
有人能解釋我如何正確處理這個問題嗎?
感謝
感謝您的理解敏捷而快速的回答克里斯。我仍然希望從您的經驗中獲益。在由顯示器處理的塊中,假設我想在其中有一個獨特的語法。假設我有第二個運算符叫做'struct',它也可以接受struct {block}等塊,並且struct語法中的塊也有一個獨特的語法。我再次展示了這個例子,但我想清楚地理解這個概念。我是否需要製作另一個yyparse()(前綴),還是可以在單個解析器中執行?謝謝! – Yannick