javacc

    0熱度

    1回答

    我使用的JavaCC 5.0生成語法文件JSON解析器:https://github.com/inqwell/json/blob/master/src/main/javacc/com/inqwell/json/JSON.jj 但也有生成的Java源代碼的一些錯誤。 char escape = '\u005c\u005c'; 和 switch(echar) { case 'n':

    0熱度

    1回答

    我試圖讓字符串像這樣在我的查詢語言: -some-hyphenated-term ,其中第一-表明長期被排除在外。問題在於-最終被包含在令牌文本中,而不是被解析爲排除令牌。我確信我錯過了一些簡單的東西,但我無法弄清楚。 options { IGNORE_CASE=true; LOOKAHEAD=2; STATIC=false; } PARSER_BEGIN(SimpleQueryPa

    0熱度

    1回答

    我正在爲一組CFG編寫解析器。 (注:RHS只能是大寫字母) /*忽略聲明之類的東西,這裏的*/ void start(): { } { ( <UPPER_CHAR> <ARROW> <STRING> (<PIPE> <STRING>)* )* } TOKEN: { <ARROW: "=>" > | <PIPE: "

    1熱度

    1回答

    我的大腦被炸,試圖消除生產規則中的一些左遞歸。 我建立與JavaCC的一個編譯器,我需要用以下2生產規則: expression := fragment ((+ | - | * | /) fragment)* fragment := identifier | number | (+ | -) fragment | expression 但問題是,片段與表達這是關係到片段,即:間接左遞歸。

    4熱度

    3回答

    我正在尋找一個解析器生成器,它接受Javacc語法文件(.jj)並在Javascript(而不是Java)中生成解析器。這樣的事情存在嗎?或者,將.jj文件轉換爲ANTLR(可以輸出Javascript)可以理解的東西有多困難?

    2熱度

    1回答

    我想在JavaCC中使下面的生產規則,但我得到一個選擇衝突錯誤。我知道如何使用預見解決問題,但我的印象是,我們不允許將它用於我們的任務。 void statement() #void:{} { <ID> (<ASSIGN>(expression() | <STRING>))| <LEFTBRACKET>argument_list()<RIGHTBRACKET> | <NOT>expr

    2熱度

    2回答

    我有一個的JavaCC語法定義一個簡單的腳本語言,簡單的表達式和條件語句是我檢討,並試圖糾正一個粗略的定義是這樣的: void Statement() : {} { Assignment() | IfStatement() } void Assignment() : {} { RealIdentifier() "=" SimpleExpression() |

    2熱度

    1回答

    我有一個任務來創建一個詞法分析器,並且除了一點之外,我已經完成了所有工作。 我需要創建一個字符串,它將接受一個新行,並且該字符串由雙引號分隔。 該字符串接受分隔符內的任意數字,字母,某些指定的標點,反斜槓和雙引號。 我似乎無法弄清楚如何逃脫一個新的行字符。 是否有某種逃避人物像新行和標籤的方式? 下面是我的一些代碼,可以幫助 < STRING : (< QUOTE> (<QUOTE> | <BAC

    0熱度

    2回答

    我使用這個grammar來生成COBOL解析器。 我使用javacc來生成解析器和Java樹生成器從這個語法生成AST。 我正在自定義一個名爲PMD的eclipse插件來讀取COBOL文件並生成AST。有一個名爲Designer的UI,允許您從源代碼填充AST。 當我嘗試使用的源代碼波紋管,我有一個錯誤信息: 錯誤信息 net.sourceforge.pmd.PMDException: Error

    1熱度

    2回答

    我試圖創建一個簡單的解析器,但嘗試的第一個元素之前,考慮可選的符號時,我有一點麻煩: void expr5() : {} { [addop()] expr6() (addop() expr6())* } 例如[ - ] 5 + 3 - 4 這裏的問題是與第一個可選[addop()] 其定義爲: void addop() : {} { <PL