ply

    0熱度

    2回答

    我上一個Python語法分析器使用層和我在的形式來解析輸入: VAR VAR1 001 +000 000 000 000 當代碼將創建一個名爲VAR 1變量然後分配值0到它 我寫的instanciation的正則表達式是: t_INST = r'[\+|-]0[ ][0-9][0-9][0-9][ ][0-9][0-9][0-9][ ][0-9][0-9][0-9][ ][0-9][0-9]

    0熱度

    1回答

    好吧,所以我正在嘗試構建我的迷你語言(顯然)的解析器,並且設置變量似乎正常工作。但只要Yacc遇到一個函數定義,它只是給了我一個語法錯誤,還有一些EOF錯誤(我知道這是從Yacc沒有剩餘規則設置的時候開始的),沒有其他事情發生......我在哪裏出錯? 這裏是語法我解析的例子: $name = "John Doe" $age = 72 $waterInOceans = 95.4 !test

    0熱度

    1回答

    假設我想只有一個PLY令牌 - 'INTEGER'。不過,我希望能夠解析不同基地的典型C型文字,因此我希望能夠解析像0b10(或0B10),010,10和0x10(或0X10)這樣的字符串。由於我並不在乎「輸入格式」是什麼,因此我只想在Python中使用int的值。 但是,在單個函數中處理所有這4種情況並不是特別方便......首先或所有正則表達式變得相當長:r'0[0-7]+|0[bB][01]

    1熱度

    1回答

    我試圖使用PLY解析包含'隱含''和''或'和'否定'的邏輯表達式,其中括號爲(Q(a)=>R(b)),其中Q(a)和R(b)是謂詞並且始終從塊字母開始,變量'a'和'b'將是單個小字母字符。 每個運算符及其操作數將被括號包圍。我試圖解析的邏輯表達式的其他例子是((D(q,w) & E(r,s)) => F(t)), (((G(a)=>H(b))=>I(c))=>J(d)), (~(~(~P(a)

    1熱度

    1回答

    有關使用YACC解析正則表達式(實際上,我使用PLY)的思想,有些規則是這樣的: expr : expr expr expr : expr '|' expr expr : expr '*' 的問題是,第一條規則(串聯)必須優先於第二條規則,但不是第三條。 但是,並置規則中沒有操作符。 如何在這種情況下正確指定優先順序? 謝謝! 編輯: 我修改了規則,以避免這個問題,但我仍然好奇,是什麼問題

    0熱度

    1回答

    所以我正在做這個項目,你要命令叉車用自然語言做某些事情,而我正在使用Python Lex Yacc。我想知道是否有辦法區分長度相同的排列後的語法?文檔只說明你可以用len(p)來做,但只有在長度不同時纔有幫助。示例代碼: def p_moveitemfromto(p): '''moveitemfromto : MOVEITEM fulltype item rack rack side

    1熱度

    2回答

    我需要使用ply從正則表達式創建AST。例如,如果RE是(a | b *)abc,我想將一個縮減的元組作爲(':',(':',(':',('|','a',(' *','b')),'a'),'b'),'c')< - ':'表示只是將字符串分成兩部分。 這是我的代碼。 tokens = ( "SYMBOL", "LBRACKET", "RBRACKET", "ST

    1熱度

    1回答

    我試圖在ply中實現某些東西,我很新,基於我在pyparsing中所做的工作,這對我來說也很新穎。我該如何編寫一個簡單的嵌套搜索,例如: thecontent = pyparsing.Word(pyparsing.alphanums) | '&' | '|' parens = pyparsing.nestedExpr('(', ')', content=thecontent) 通過使用PLY

    0熱度

    1回答

    我用PLY編寫了一個解析器,它可以滿足我的需求。 現在,我想使用解析器類來解析多個文件。 而不是實例化每個文件的解析器類,我想重新使用相同的實例化類的所有文件(以便我可以在解析器類中積累一些結果)。 解析一個文件可能無法很好地完成,因此我想在輸入另一個文件之前重新初始化解析器。 什麼是重新初始化PLY解析器的正確方法? 如果要重複使用多個文件相同的解析器(?或者說,我不應該再使用一個解析器)

    0熱度

    1回答

    我用PLY構建的詞法分析器出現問題。 當我將for循環的代碼傳遞給我的程序時,無法識別{和}之間的換行符。相反,即使存在t_newline(t)函數,也會報告錯誤。 輸入到程序是: for(int i = 0 ; i < 5 ; i++){ } 而且,該程序的輸出是 1 . analizadorLexico.py 2 . analizadorSintactico.py 3 . parse