lemon

    5熱度

    2回答

    我有一個問題,使用(可重入)Flex +檸檬解析。我使用簡單的語法和詞法分析器here。當我運行它時,我會輸入一個數字後跟一個EOF標記(Ctrl-D)。打印輸出結果將改爲: 89 found int of . AST=0. 其中第一行是我放的數量從理論上講,AST值應該是一切,我把總和 編輯:。當我打電話解析( )手動它運行正確。 此外,即使令牌爲0(停止令牌),檸檬似乎也運行atom

    0熱度

    2回答

    我不確定此語法是否適用於也應該能夠執行單引號和雙引號的shell命令語言。看起來非重要的命令可以工作,例如ls -al | sort | wc -l但簡單的一個不適用於單引號:echo 'foo bar'不起作用。 %{ #include "shellparser.h" %} %option reentrant %option noyywrap %x SINGLE_QUOTE

    1熱度

    1回答

    我有我在Ragel中實現的詞法掃描器,當我識別各種類型的空白時,我需要使用一個標記。但除了分離其他令牌之外,我不關心空白。如果我把它傳遞給我的檸檬解析器,我將不得不插入許多額外的規則來擺脫它,這將使我的語法變得醜陋,並且減慢解析速度。但是我發現讓檸檬生成一個空白符號的唯一方法就是制定一個我從不打算使用的降低規則。 目前,我有一個規則list0 ::= .允許一個空的列表,所以我加了一個list0

    2熱度

    1回答

    我想用檸檬和蘋果核心基金會編寫一個簡單的JSON解析器。 這裏是到目前爲止的代碼: %include { #import <CoreFoundation/CoreFoundation.h> #import "state.h" // struct ParserState { CFTypeRef result; }; #import "tuple.h" // struct Tuple { C

    0熱度

    1回答

    我想從輸入中獲取參數。例如:Input:12+10。 運行我的計算器後。 我想得到12和10.我知道,我不得不使用Parse(pParser, hTokenID, sTokenData, pArg);中的第四個參數,但是怎麼樣? parser.y: %syntax_error{fprintf(stderr, "Syntax error\n");} %left PLUS MINUS. %left

    1熱度

    1回答

    我覺得檸檬語法分析器生成器在非關聯優先級上做錯了。我有一個簡化的語法,展現了我所看到的問題。 %nonassoc EQ. %left PLUS. stmt ::= expr. expr ::= expr EQ expr. expr ::= expr PLUS expr. expr ::= IDENTIFIER. 產生具有像這樣一個衝突的報告: State 4: exp

    2熱度

    1回答

    我正在將一箇舊的語法移植到檸檬中,並且我已經在頭文件中定義了所有的終端符號;我想用這些值而不是parser.h中生成的那些值:這是可能的嗎? 覆蓋parser.h完全沒用,因爲這只是內部發生的事情的一面鏡子,匹配的值將保持相同。 (由於檸檬股大量的代碼與野牛我認爲,野牛解決方案將解決檸檬過問題)

    0熱度

    2回答

    我能夠通過跟隨this question一起添加對我的解析器交替字符的語法(例如ababa或baba)的支持。 我現在正在通過允許重複字符來擴展它。 例如,我希望能夠支持abaaabab和aababaaa以及。在我的情況下,只允許重複a,但允許重複b的解決方案也是有用的。 給出的規則從另一個問題: expr ::= A | B A ::= "a" B | "a" B ::= "b" A | "

    2熱度

    1回答

    我試了幾次。在Google上,re2c + lemon只有幾個教程。 目前所有的例子出現了類似像一堆的錯誤: In file included from main.cpp:2:0: parser.y:44:5: error: ‘yygotominor’ was not declared in this scope A.int_value = B.int_value * C.int_va

    3熱度

    1回答

    我試圖使用檸檬分析器生成器生成分析器表,但運行lemon grammar.y時生成的.out文件僅包含自動機的狀態。 有沒有辦法讓非終端的goto表,不僅是自動機的狀態? 或者這隻能通過讀取生成的代碼來完成? 是否有其他工具可以生成動作和goto表? PS: 的.out文件(由檸檬產生)爲一個簡單的語法看起來像這樣: State 0: start ::= * e e :