jison

    1熱度

    2回答

    我試圖在Jison中實現解析器。解析器支持兩種JSON對象:{ a: 1 }和塊:if (true) { statement(); }。 我的語法是這樣的: block: : '{' '}' | '{' statementList '}' ; objectExpression: : '{' '}' | '{' properties '}'

    1熱度

    1回答

    我寫類似的JavaScript其分號插入前語言解析器: var x = 1 + 2; x; 和 var x = 1 + 2 x 甚至 var x = 1 + 2 x 是相同。 現在,我的詞法分析器僅在與分號不同的令牌出現後才匹配換行符(\ n)。這對1和2這樣的基本情況起到很好的作用,但我如何處理第三種情況?即在表達中間發生的新行。我無法每次都匹配新行,因爲它會污染我的解析器

    0熱度

    1回答

    我在想如何獲得語法中令牌的行號。假設我有以下語法: S : expr MINUS expr { $$ = $1 -$3; } ; 如何獲取MINUS令牌的行號? 我不使用內jison詞法分析器,而是通過重寫詞法分析器從法文件傳遞: parser.lexer = { lex: function() { var token = "MINUS"; parser

    2熱度

    2回答

    我正在嘗試使用Jison。 這裏是我的語法: var grammar = { lex:{ rules:[ ["\\s+", ""], ["then", "return 'newline';"], ["goto", "return 'goto';"], ["http[^\\s]*", "return 'url';"],

    0熱度

    1回答

    我剛剛開始編寫DSL並希望使用JISON(http://zaach.github.io/jison)。我正在嘗試學習語法語法,並遇到用雙引號指定字符串的問題。 什麼我想會的工作是: %lex %% [\n\s]+ /* skip whitespace */ "true"|"false" return 'BOOL' "IF" return 'START' "AND"|

    0熱度

    1回答

    中獲得一個規則的許多實例我正在使用JISON(http://zaach.github.io/jison),並且正在學習。我遇到了一個問題,解析器停下來,並且沒有超過第一場比賽;我認爲。這裏是我的語法定義: /* lexical grammar */ %lex %% \n\s{4} return 'INDENT' \n+ return 'NL' [\s\t]+

    0熱度

    1回答

    我想用jison爲JavaScript語言的一個子集創建一個解析器,我有一些問題。 起初,我有這個定義非終結stmt和它的作品: stmt : FOR LPAREN varlist_decl SEMICOLON expr SEMICOLON expr RPAREN stmt {$$ = ['for ('].concat($3, ['; '], $5, ['; '], $7,

    4熱度

    1回答

    以下代碼片段位於:http://zaach.github.io/jison/demos/calc/以及jison文檔頁面。在閱讀jison,lex和flex文檔之後 - 我仍然不完全瞭解%lex和/ lex語法。是否特定於jison掃描儀發生器?含義是它提供稍後在文檔中顯示的json輸出的唯一函數?我只問,因爲jison文檔沒有明確解釋它的用途,而flex/lex規則似乎不允許這樣的語法。 /*

    0熱度

    1回答

    我正在使用jison文件並使用python PLY的lex模塊將其轉換爲解析器生成器。 我注意到在這個jison文件中,某些標記有多個與它們相關的規則。例如,對於令牌CONTENT,該文件規定了以下三個規則: [^\x00]*?/("{{") { if(yytext.slice(-2) === "\\\\") { strip(0,1);

    1熱度

    1回答

    因此,我爲搜索查詢語言創建了一個.jison文件,該語言基本上是SQL where語句的子集。這個文件可以在這裏看到: https://gist.github.com/ryanzec/7d1c8100d1b5f03c0a17 現在的作品,因爲我期望它一個字符串轉換成JSON對象時。現在我已經閱讀了文檔,並且找不到任何內容,但是可以將輸出的JSON對象輕鬆地編譯回字符串,還是必須手動編寫該過程?