error-recovery

    0熱度

    1回答

    我寫過一個叫LimitedInputStream的課。它包裝現有的輸入流以將從中讀取的字節數限制爲指定的長度。這意味着作爲替代: byte[] data = readAll(length); InputStream ins = new ByteArrayInputStream(data); 這需要額外的緩衝區。 這是類: public static class LimitedInputStr

    1熱度

    1回答

    我覺得解析器發電機是一個很不錯的工具,在你的編程工具包使一些玩耍後,我寫我自己只是爲了瞭解事情做得更好,它竟然是比我預想的要好所以我一直堅持下去。 有一件事情一直纏着我最近雖然是錯誤報告和恢復。我做得不好。我知道一種方法是令牌同步,但線索似乎停在那裏。除了滾動你自己的遞歸下降解析器,幷包括各種啓發式算法,在解析器生成器中處理錯誤報告和錯誤恢復的一些通用目的是什麼?

    1熱度

    2回答

    我有一個ANTLR固定節點,而不是錯誤的節點產生,使用C靶Java解析器和它工作得很好。問題是我也希望它解析錯誤的代碼併產生一個有意義的AST。如果我爲它提供一個帶有一個導入的最小Java類,之後缺少一個分號,它會生成兩個「樹錯誤節點」對象,其中導入類的令牌和令牌應該是。 但由於它正確地解析下面的代碼,併產生正確的節點爲這個編碼它必須從錯誤通過將分號或通過重新同步恢復。有沒有辦法讓antlr反映它

    1熱度

    2回答

    所以我不知道我會怎麼做,所以任何人都可以提出任何算法或方法來解決這個問題? 更具體地說,這個詞不能由元素週期表的元素組成,因爲這意味着這個詞總是可以組成的。我所要問的是,這個詞是否可以通過附加元素的簡短形式來形成。 此外,您建議的方法的運行時間是什麼? 對不起,如果問題仍然太模糊。如果缺乏細節,我會編輯。

    2熱度

    1回答

    我發現我可以在語法規則中使用'錯誤'作爲錯誤恢復機制。所以如果出現錯誤,解析器必須放棄當前行並從下一行繼續解析。從野牛手冊實現這個例子可能是這樣的: stmts: exp |stmts exp | error '\n' 但我不能使用它;因爲我必須讓flex在我的scannar中忽略'\ n',所以表達式並不侷限於用一行表示。如何解析器 - 遇到錯誤時 - 繼

    0熱度

    2回答

    我devloping我自己的編譯器,我有錯誤恢復設計 在java語法的恐慌模式的問題。 我想到了多種解決方案,但真正的問題: 我怎麼能做到這一點與野牛C++? 我這樣做: 包2 進口的java.lang。*; 誤差必須消耗到第一半結腸和這與規則運行正確 package_rule:包錯誤「;」 但如果我寫這個代碼: 封裝2 進口的java.lang * 等級Y {無效方法(){INT米} } 我需要

    1熱度

    1回答

    我今天下載了Rhino Security,並開始進行一些測試。幾個獨立完美運行的開始出現錯誤之後,會故意引發異常。下面是測試: [Test] public void EntitiesGroup_IfDuplicateName_Error() { _authorizationRepository.CreateEntitiesGroup("Admininstrators");

    1熱度

    1回答

    序言 我已經寫了GLR分析器,錯誤恢復。當它遇到錯誤時,它會分裂成以下幾種選擇: 將期望的元素插入到輸入中(可能是用戶錯過了它),然後照常進行。 用期望的元素替換錯誤的元素(可能是用戶剛剛輸入錯誤)並照常進行。 跳過錯誤的元素,如果下一個元素也是錯誤的,則轉到#2。 但是,如果輸入有很多錯誤(例如,用戶錯誤地將JPEG文件提供給解析器),一些替代方法呈指數增長。 例 這樣相應於下列語法解析器: P

    0熱度

    1回答

    我已經在黃瓜中設置了一個功能,並使用@javascript標籤讓它在硒中運行 在我的開發機器上硒運行良好,但因爲webdriver不支持本地事件在OSX但我需要把它掛到虛擬機運行Ubuntu 我有webdriver的服務器上運行我的Ubuntu機器 上攻擊我的水豚司機像這樣把它連接到像這樣的遠程服務器: def browser unless @browser @browser