lemon

    1熱度

    1回答

    我嘗試學習解析器。因爲我的C技能很低,所以我搜索了一個PHP Lemon來學習Parser Generators。無論如何,這裏的代碼對於普通的檸檬朋友也應該是可讀的。 與往常一樣,當處理解析問題時,我首先嚐試製作一個簡單的計算器。 所以我的第一個步驟很簡單: start(A) ::= expr(B). {echo "======RESULT:".A.":".B.":=========".PHP_

    -1熱度

    3回答

    我已經使用Lemon Parser生成了解析器代碼。我無法調試生成的代碼。控件顯示除當前執行的語句之外的其他一些源代碼。斷點被取代。我嘗試了gdb和Visual C++。兩者都有同樣的問題。請告訴我調試它的方法。

    2熱度

    1回答

    所以基本上我想在PHP中使用由PEAR包生成的詞法分析器/解析器PHP_LexerGenerator和PHP_ParserGenerator來解析結構CSS代碼。我的目標是解析這樣的文件: selector, selector2 { prop: value; prop2 /*comment */ : value; subselector {

    4熱度

    2回答

    我使用檸檬作爲解析器生成器,其錯誤處理與yacc和野牛的相同,如果您不知道檸檬。 檸檬有一個選項可以在一組規則中定義錯誤標記以捕獲分析錯誤。生成的解析器的默認行爲是銷燬導致錯誤的令牌;有什麼方法可以重寫這種行爲,以便我可以保持令牌? 下面就來展示一下發生的事情爲例:基本上我追加令牌每個規則一起改革輸入字符串,這裏是一個例子語法: input ::= string(A) { printf("%s",

    1熱度

    2回答

    我有以下的檸檬語法(從實際語法簡化): %right ASSIGN . %nonassoc FN_CALL . program ::= expression . expression ::= expression ASSIGN expression . expression ::= function_call . [FN_CALL] expression ::= IDENTIFIER

    2熱度

    1回答

    我讀檸檬解析器的PHP portation: for ($i = 0; $i < $this->nstate; $i++) { /* Loop over all states */ $stp = $this->sorted[$i]->data; for ($cfp = $stp->cfp; $cfp; $cfp = $cfp->next) { /* Loop ove

    4熱度

    2回答

    我有一個簡單的LALR(1)語法,但遇到了問題。 start ::= spec. spec ::= MOD STRING top_stmt. spec ::= top_stmt. top_stmt ::= stmt. top_stmt ::= conditional. stmt ::= expr. stmt ::= assignment. conditional ::= IF stm

    3熱度

    2回答

    自從現在我一直堅持這一點。我想分析簡單的東西如: 喜歡:字詞1字詞2 .. wordN HATES:字詞1字詞2 .. wordN 我使用檸檬+ Flex的。目前我的語法看起來像這樣: %left LIKES MOODS FROM HATES INFO. %syntax_error { std::cout << "Syntax error!" << std::endl; } f

    1熱度

    1回答

    在lemon我能夠使用解析函數的第三個參數來返回結果給調用者,當起始符號減少。 我如何在野牛身上做同樣的事情?在最終致電yypush_parse()之後,在啓動符號的動作代碼中將該值分配給$$並將其作爲「yy minor」值分配給該值是否足夠? 解析器是推和純的。線程安全是必須的。

    0熱度

    1回答

    //complete start ::= template. //template template ::= template_elements. template ::= template template_elements. template ::= . //template elements template_elements(res) ::= COMMENT. temp