jison

    1熱度

    2回答

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

    2熱度

    2回答

    我試圖用一些簡單的函數來擴展Jison calculator example。我是相當新的解析和野牛/ jison,但這一點是我到目前爲止有: /* lexical grammar */ %lex %{ var funcs = { pow: function(a, b) { return Math.pow(a, b); }, test: function(a)

    0熱度

    2回答

    我正在嘗試創建一個簡單的腳本語言。對於一開始我只是想的東西一樣 i = 5; i += 3; out(i); 所以我創建了下面的文法jison: %lex %% \s+ { /* ignore */ } "=" { return '='; } "+=" { return '+='; } "-=" { return '-='; } "*="

    0熱度

    1回答

    我現在坐在一個問題面前多個小時,看起來相當簡單但解決不了問題,但我不能得到它:/ 我在jison中定義了一個類似javascript的小語言。問題是參數規則和AssignStatement規則都可以以CHAR_SEQUENCE開頭,並且它總是選擇參數規則。例如。即使代碼是a = 5;到達throw "reached parameter";如此看來解析a作爲參數,而不是a = 5;爲AssignSt

    1熱度

    1回答

    我正在開發一個簡單的SQL,用於在JavaScript中生成Mongo查詢條件。 我正在使用Jison來解析SQL的where子句。 以下語法以OR和AND嵌套的二叉樹形式返回AST。 我想要的是獲得一個AST節點,其中OR節點具有單節點(扁平樹)中的所有術語。 /* lexical grammar */ /* http://stackoverflow.com/questions/8467150

    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,

    8熱度

    1回答

    在Jison以前的版本中,可能有一個Flex樣的功能,允許定義變量在詞法和語法分析器環境都可以訪問,如: %{ var chars = 0; var words = 0; var lines = 0; %} %lex %options flex %% \s [^ \t\n\r\f\v]+ { words++; chars+= yytext.length; } . { cha

    0熱度

    2回答

    處理 我已生成使用JISON解析器: %lex %x TEXT %% ("Project"|"project") {return 'PROJECTCOMMAND';} "-au" {return 'ADDUSER';} "-n" {this.begin('TEXT'); return 'NAMEOPTION';} "-k" {return 'KEYOPTION';} "-desc"