jison

    0熱度

    1回答

    我有一個簡單的文件格式,我想用jison解析器生成器進行解析。該文件可以包含任意順序和數量的多個表達式。下面是解析器jison文件: /* lexical grammar */ %lex %% \s+ /* skip whitespace */ \"(\\.|[^"])*\" return 'STRING' File\s*Version\s*\: return 'FI

    2熱度

    1回答

    有沒有辦法將數據傳遞給Jison,以便它可以在解析過程中引用它?作爲起始時,比方說,我們正在使用的calculator.jison,並希望通過它的對象,說 var parser = new jison.Parser(bnf); var data = `{m: 4, b: 2, x: 10}; parser.parse("m*x + b", data); 這裏有一個新的情況下VARIABLE

    3熱度

    1回答

    我對jison特別新,並且設法將有用的查詢解析器拼湊在一起。現在我試圖創建一個解析器可以解析像「一個== 1和b == 1和c == 1」的字符串轉換爲對象像 {and: [ {a: {eq: 1}}, {b: {eq: 1}}, {c: {eq: 2}} ]} 而串像「一個== 1或b == 1和c == 1" 應解析爲一個對象像 {or: [ {a

    0熱度

    1回答

    解決S/R衝突 我已經寫在jison一個非常簡單的解析器,但似乎是在這個語法中的S/R衝突: /* lexical grammar */ %lex %% \s+ /* skip whitespace */ ":" return ':' "." return '.' [a-zA-Z_][a-zA-Z0-9_]* return 'IDENTIFIER' <<EO

    0熱度

    2回答

    作爲一個寵物項目,我試圖用Jison(一個Bison的JavaScript克隆)製作groff解析器,但是我努力想弄明白groff的語法是否爲LALR(1),我正在努力研究。 有沒有人對此有所瞭解? 在此先感謝。 更新1 針對布萊恩擔心,這裏是我的問題的詳細信息: Groff還用C++編寫,並且不使用野牛,我得出的語法我。 我已經上傳了我的一切進步here

    0熱度

    1回答

    我想在JavaScript中爲Lilypond語言的音樂符號編寫解析器。我的第一個手動嘗試工作,但只能處理該語言的一小部分。由於Lilypond使用野牛文件來定義它的語法[1],JISON聲稱能夠從野牛文件中工作,我的想法是可能使用這些定義在JavaScript中生成解析器。 我找不到任何地方的任何例子,並試圖將這些文件直接送入JISON只是拋出錯誤。 什麼是最好的方法來解決這個問題? [1]:見

    1熱度

    1回答

    如果標題不夠清晰,我很樂意進行分析和解析。 基本上,我使用Jison來解析一些文本,我試圖讓詞法分析器理解縮進。這裏是有問題的位: (\r\n|\r|\n)+\s* %{ parser.indentCount = parser.indentCount || [0]; var indentation = yytext.replace(/^(\r\n|\r|

    0熱度

    1回答

    這是Jison中的解析器,但我猜這同樣適用於Bison。 我有一個規則有一個表達式的定義。 expr : NUMBER -> { type: "number", value: $1 } | "(" expr ")" -> $2 | expr "+" expr -> { type: "+", left: $1, right: $3 } | expr "-" e

    1熱度

    2回答

    我有一個Jison一段代碼,看起來像這樣: %lex %options flex %{ if (!('regions' in yy)) { yy.regions = []; } %} text [a-zA-Z][a-zA-Z0-9]* %% \s+ /* skip whitespace */ \n+ return 'NL'; ","

    1熱度

    1回答

    我試圖用jison(http://zaa.ch/jison/docs/)編寫簡單的解析器,停留在描述文本中。 %lex %% [\s\n\t]+ return 'TK_SPACE'; [0-9]+("."[0-9]+)?\b return 'TK_NUMBER'; [a-zA-Z]+([a-zA-Z0-9]+)?\b return 'TK_WORD'; <<EOF>>