grako

    0熱度

    1回答

    這裏有一個簡單的語法: START = DECL DECL $ ; DECL = TYPE NAME '=' VAL ; TYPE = 'int' | 'float' ; NAME = 'a' | 'b' ; VAL = '4' ; 我解析此輸入流與Grako: int a = 4 float b = 4 ,我檢索該抽象語法樹(JSON): [ "int",

    0熱度

    1回答

    在grako中,可以使用以下name:e將名稱的結果添加到AST中作爲關鍵字。例如, var_def = var+:ID {',' var+:ID}* 這將是一個很好的翻譯到Xtext? 我試圖 var_def: var=ID (',' var=ID)*; 這並不是失敗,而是提高以下警告 Multiple markers at this line - The

    2熱度

    1回答

    請參閱標題。對於我正在編寫的一個小工具,我想介紹一個簡單的布爾過濾器語言,並決定做到「正確」並使用解析器生成器。在用grako玩了一下後,我發現我很喜歡它,並且過濾語言做得相當快(這也很好:)) 現在的問題是,如果我想在其他計算機上使用該工具或給對於其他人我首先必須以某種方式使grako在那裏可用,這有點麻煩,因爲其他一切都是標準的python3東西。 我想通過聯合包裝必要的grako-class

    0熱度

    1回答

    我想描述一個可嵌套的條件。以下是我的工作: expr = (/[_a-zA-Z][a-zA-Z0-9_-]*/) ; condop = ("AND" | "OR") ; condition = expr { condop condition } ; start = condition ; 我可以生成與行的AST喜歡: foo AND bar 這裏的AST: [ "foo

    2熱度

    1回答

    我正在使用grako(一種用於python的PEG解析器生成器庫)來解析文檔可以包含一個或多個協議的簡單聲明性語言。 我本來寫成文檔根規則: document = {protocol}+ ; 這適當返回協議的列表,但只給出了有益的錯誤,如果語法錯誤是在第一個協議。否則,它默默地放棄無效協議及其後的所有內容。 我也試了一些變化: document = protocol document | $ ;

    1熱度

    1回答

    我正在嘗試編寫grako風格的ebnf語法。我發現生成的解析器在嘗試解析正則表達式時似乎沒有超過空格或註釋。 文檔說關於該主題 不像其他的表情下面,這一個不超過空白或意見前進。爲此,將正則表達式作爲自己規則中的唯一術語。 然後我創建了一個只有一個正則表達式規則的簡單語法。正則表達式也是該規則中的唯一術語。 @@eol_comments :: ?/(#[^\r\n]*)|(\/\/[^\r\n]*)

    1熱度

    1回答

    我的語法文件test.ebnf樣子, start = identifier ; identifier = /[a-z]*/ rest; rest = /[0-9]*/ ; 當我運行這個語法在輸入「test1234」,我希望它產生「test1234」作爲一個單一的語義,而是將AST的樣子, AST: ['test', '1234'] 我試着與nameguard功能設置爲f

    0熱度

    1回答

    如果您查看下面的語法,您可以看到一條主要規則表達式,它將被解析爲更具體的表達式類型。 expression::Expression = or_ex:and_expr {'||' or_ex:and_expr}+ | andex:and_expr ; and_expr::AndExpression = and_ex:sub_expr {'&&' and_ex:sub_

    1熱度

    1回答

    我試圖從PyPI安裝包裹grako,它顯然是用Cython編譯的東西。 我不知道這個過程是什麼意思,它打破了一個未解決的符號。 也許有人可以給我一個提示什麼檢查,使這項工作? 這是在Windows,巨蟒,巨蟒3.4輸出: Compiling grako\ast.py because it changed. Compiling grako\bootstrap.py because it chang

    0熱度

    1回答

    我試圖找出改善顯示給Grako生成的解析器的用戶的錯誤的最佳方法。看起來像Grako生成的解析器在輸入文件中遇到一些解析問題時顯示的默認解析錯誤沒有幫助。錯誤通常似乎意味着當真正的錯誤在某處不同時,問題出現在輸入文件的一部分中。 我一直在尋找Grako語義類來放入一些檢查,如果檢查失敗會顯示更好的錯誤消息,但它似乎也可能有大量的邊緣案例,必須指定能夠捕捉解析規則可能失敗的所有可能方式。 有沒有人有