javacc

    0熱度

    1回答

    我正在製作一個處理多行輸入的分析器。 輸入程序定義了一些功能,主線用於結果。 例如,定義具有{x + 3}的函數A(x是函數A的參數)。 如果主線呼叫功能A如MAIN {A(1 + 3)},那麼如何調用函數A來計算MAIN行中的表達式。

    0熱度

    2回答

    我使用的JavaCC上的Java 8. 我有以下BNF形式: Program -> (Definition)* EOF Definition -> (FUNCTION_DEF) (FUNCTION_NAME) (PARAMATER_NAME) (OPEN_B) (FUNCTION_BODY) (CLOSE_B) 隨着以下詞法分析器 TOKEN : { < EOL : "\n" | "\r"

    0熱度

    2回答

    我在清除JavaCC中的左遞歸時遇到了問題。我找到了一個解決方案Epsilon tokens,但似乎JavaCC無法與Epsilon令牌一起工作得很好(如TOKEN : <eps : "">)。下面我準備一個我的問題的例子: void prod1() : {} { <beta1> | prod2() <alpha1> } void prod2() : {} {

    -1熱度

    1回答

    我想通過說我知道這裏存在類似的問題:How to create specific error messages based on parse exceptions in JavaCC 但我沒有所需的50代表評論它來問我的問題。 我想基本上這樣做,如果令牌不是大寫,它會說「輸入必須是大寫」。我的代碼還有一些,但這基本上就是我想要做的。 我試着按照答案的建議做,並且在最後只包含引發自定義消息異常的代碼

    0熱度

    1回答

    我想區分多個令牌。 看看我的代碼。 TOKEN : { < LOOPS : <BEAT> | <BASS> | <MELODY> > | < #BEAT : "beat" > | < #BASS : "bass" > | < #MELODY : "melody" > } void findType(): {Token loops;}

    -1熱度

    1回答

    使用JavaCC 6.0_1,並將JDK_VERSION設置爲(默認值)1.5, 我無法使用ParseException的getErrorOffset方法 - 儘管存在Java docs stating that it exists。 有什麼我錯過了嗎? 最低例如: PARSER_BEGIN(B) class B { public static void main(String[] a

    0熱度

    2回答

    爲什麼JavaCC總是在前瞻中給出終端錯誤?就像在這個例子中, options{ LOOKAHEAD = 2; } PARSER_BEGIN(GS) public class GS{ public static void main(String args[]) throws ParseException { GS parser = new GS(

    0熱度

    2回答

    我試圖創建一個包含所有函數名稱的地圖。我可以在掃描階段或解析階段執行此操作,但似乎無法獲得可供兩者訪問的相同變量。 我需要的是在開始解析之前將所有函數名保存在地圖中,因爲函數可以在被調用的地方之下聲明。所以我需要檢查該函數是否存在。 我嘗試過使用令牌管理器聲明,它允許我在每次看到地圖時向地圖添加令牌。但後來我需要funcs變量才能被解析器看到,因此它可以檢查函數是否存在。 TOKEN_MGR_DE

    1熱度

    1回答

    我有以下javacc語法。 規則UnaryExpr創建實施java.util.function.Predicate<> options { static=false; DEBUG_PARSER=false; IGNORE_CASE=true; JDK_VERSION="1.8"; } (...) private Predicate<SAMRecord> UnaryExpr():

    0熱度

    3回答

    我爲包含循環的腳本語言做了一個解釋器,使用javacc我已經定義了語法,但是我不能有辦法備份到一行來重複執行塊「for」。 如何備份令牌管理器,以便循環體可以重新解析,從而重新評估,一遍又一遍? void For(): {ArrayList<String> lst;Token n,v;int i=0;} { "for" "(" n=<ID> ":" v=<ID> ")" "{"