lex

    3熱度

    1回答

    function yy_r9_1($yy_subpatterns) { $this->token = Smarty_Internal_Templateparser::TP_PHP_CODE; $this->yypopstate(); } 以上是來自php中smarty的詞法分析器,誰知道yy_r9_1是什麼意思?

    3熱度

    1回答

    我絕對沒有編譯器背景,並開始了「教我自己」的旅程。我正在學習如何使用this教程lex和輸入這樣的事情到一個文件名爲first.l %% /* match everything except newline */ . ECHO; /* match newline */ \n ECHO; %% int yywrap(void) { return 1; }

    1熱度

    1回答

    我正在嘗試編寫JSON解析器(由於某些項目限制而不是使用免費的解析器之一),並且已經編寫了基於lex + yacc的版本包裝C++類。我重新定義了YY_INPUT宏以便從內存緩衝區讀取lex。現在交易是確保解析器是線程安全的,我不確定這是多麼容易確保。有兩個問題: 最終YY_INPUT正在讀取全局對象。我想不出另一種方式來做到這一點。 我不知道生成的lex/yacc代碼最終會使用多少個全局變量。

    1熱度

    1回答

    當我創建一個語法文件並對它做一個yacc -d時,我得到一個y.tab.h輸出文件。有什麼辦法可以將我想要的令牌的值填入yacc而不是選擇值? 例如, %token FIRST_NAME %token LAST_NAME ... 產生(在y.tab.h): #define FIRST_NAME 257 #define LAST_NAME 258 我知道的是,第一256個值被保留用於單

    1熱度

    1回答

    我試圖用PLY (python implementation of yacc)編寫一個相當簡單的語法,並且在我需要時減少令牌字符串時遇到問題。 我想解釋一系列採取不同類型的參數命令。每種不同的論點都有不同的標記。令牌所散發出來的lex字符串可能是這樣的: COMMAND VARARG VARARG STRARG COMMAND VARARG STRARG STRARG 我想yacc到每臺線降

    0熱度

    1回答

    有人可以幫助我使用ml-lex的yyleng函數。 我怎麼可能用它顯示在分析器

    6熱度

    2回答

    我將ply用作我的lex解析器。我的規格如下: t_WHILE = r'while' t_THEN = r'then' t_ID = r'[a-zA-Z_][a-zA-Z0-9_]*' t_NUMBER = r'\d+' t_LESSEQUAL = r'<=' t_ASSIGN = r'=' t_ignore = r' \t' 當我嘗試解析以下字符串: "while n <= 0

    6熱度

    2回答

    我的工作是解析JSON字符串解析器,我想使它成爲一個圖書館。 的問題是,當我使用ld在我寫的庫鏈接, 有一個錯誤信息: main.o: In function `main': main.c:(.text+0x0): multiple definition of `main' json-parser.o:/build/buildd/flex-2.5.35/libmain.c:29: first

    0熱度

    1回答

    像this file,在我看來只有宣言就夠了。 任何人都可以解釋爲什麼規則是必要的詞法分析? 在我看來他們只是在.y文件需要... 通過規則我說的像塊: rdels { if ($this->smarty->auto_literal) { $this->token = Smarty_Internal_Templateparser::TP_OTHER; } else {

    1熱度

    1回答

    即使世界一點點的C代碼是這樣的: int doCommand(char* command) { // +2 on strlen is for the two extra '\0' characters // needed by flex when scanning strings. YY_BUFFER_STATE yybs = yy_scan_buffer(comm