lex

    0熱度

    1回答

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

    -1熱度

    1回答

    我創建了一個程序,將行號附加到作爲參數傳遞給程序的文本文件中。 yyin工作正常,但yyout不工作,即正在從指定文件讀取內容,但沒有任何內容正在寫入輸出文件,而是將輸出顯示給控制檯。 任何幫助,非常感謝。

    0熱度

    1回答

    我想明白爲什麼野牛以下規則 stmt: declaration { ... } | assignment { ... } | exp { ... } | ID ';' <-- this rule { ... fprintf(stderr, "\n my id is '%s'", $1);

    -1熱度

    1回答

    我正在嘗試爲我自己的迷你語言構建一個解析器,然後由YACC自己將它翻譯成C++。 問題是,YACC正在讀取輸入的第一行以及輸入的第二行中的第一個標記,並將其與相應的規則進行匹配,而它應該只讀取第一行輸入中的標記以及與相應的規則匹配它 我的輸入文件是: print "hello" a = 10 print a 萊克斯文件: %{ #include <stdio.h> #i

    0熱度

    1回答

    我想了解編譯器和編程語言是如何製作的。爲了做到這一點,我想創建一個簡單的計算器,只是加法和減法。下面是我編寫的Lex和Yacc文件。 calc.yacc文件: %{ #include <stdio.h> #include <stdlib.h> extern int yylex(); void yyerror(char *); %} %union {

    0熱度

    1回答

    Lexer.l %{ #include "y.tab.h" %} %% "define" return(TK_KEY_DEFINE); "as" return(TK_KEY_AS); "is" return(TK_KEY_IS); "if" return(TK_KEY_IF); "then" return(TK_KEY_THEN); "else" return(TK_KEY_

    0熱度

    1回答

    我在修復語法中的移位減少衝突時遇到問題。我嘗試添加-v來讀取問題的輸出,它引導我進入狀態0,並提到我的INT和FLOAT被規則9簡化爲variable_definitions。我看不到衝突,並且無法找到解決方案。 %{ #include <stdio.h> #include <stdlib.h> %} %token INT FLOAT %token ADDOP MULOP INCOP

    1熱度

    1回答

    我想這樣的字符串分割: x^-5 - 3 到像這樣的列表: [x^-5, -, 3] 後的第一個減去^必須相同列表索引作爲x,因爲它只是負指數。但是,我希望其他不是任何指數的不利因素都可以在他們自己的指數上。 當通過 - 進行分割時,顯然我的x^-5也被分割爲兩個。 那麼有什麼辦法可以使用RegEx或類似的東西來實現這個嗎? 在此先感謝

    0熱度

    1回答

    我對Flex yyunput行爲有所瞭解。 我要放回一些charackters 對於爲例: 我的掃描儀發現CALL {空間} {CC} cc N?Z|N?C|P[OE]?|M %% CALL{blank}{cc} {BEGIN CON; return yy::ez80asm_parser::make_CALL(loc);} CALL{mmode}{blank}{cc} {BEGIN

    0熱度

    1回答

    我想了解Lexer(source)我正在移植到JavaScript,並且很難理解來自輸入的數據如何讀入緩衝區。這是一個標準的Lexer,所以我希望有人可以給我一些提示#919上發生的事情。 片段中的問題: register char *dest = yy_current_buffer->yy_ch_buf; register char *source = yytext_ptr; ... /