lex

    0熱度

    2回答

    我正在嘗試讀取Flex詞法分析器中字符的已知數字(在運行時)。我知道它以CRLF開頭,所以我匹配,然後使用yyinput讀取literal_length字符。 <EXPECT_LITERAL>"\r\n" { for(int i=0;i<literal_length;i++){ int c= yyinput(yyg); if(c == EOF) break;

    1熱度

    1回答

    我寫萊克斯/ Yacc的代碼來檢測的#include < 一些庫>或#包括「一些頭文件」的#include這是我的代碼: 萊克斯代碼 %e 1019 %p 2807 %n 371 %k 284 %a 1213 %o 1117 O [0-7] D [0-9] NZ [1-9] L [a-zA-Z_] /***********************/ A [a-zA-Z_

    0熱度

    1回答

    我想使用lex/yacc編寫我自己的編譯器,只有兩個代碼,我指示它像這樣運行(現在沒有額外的頭文件)。 所以這是我的lex文件(FP.L): %{ #include "FP.tab.h" %} KEYWORD Program|Function|return|if|then|else|while|do|or|and|print PROG "Program" FUNC "Function"

    0熱度

    1回答

    我可以寫這樣的: ">" | "<" | "!=" {printf("Operator");} 我不想重複相同的C代碼的一些模式。有什麼方法可以使用lex來編寫像這樣的多個模式?

    -1熱度

    1回答

    我有一個lex程序如下。我遇到一個動作lex程序 %{ #include<stdio.h> #include<math.h> #include "y.tab.h" %} %% [ \t]+ ; [0-9]+ {yylval = atoi(yytext); return INTEGER;} [-+*/] {return *yytext;} "(" {return *yytext;

    1熱度

    1回答

    我是編譯器新手,學習如何使用計算器從.txt文件輸入多行方程(每行一個方程)。而我正面臨着分段錯誤的問題。 YACC代碼: %{ #include <stdio.h> #include <string.h> #define YYSTYPE int /* the attribute type for Yacc's stack */ extern int yylval; /* defined

    0熱度

    1回答

    我有一個問題,我的規則無法減少。首先,我想寫爲了一個Yacc的規則來檢測聲明: STUDENT_T* pSearch=pHead; 所以我寫了如下的規則: struct_initialize: IDENTIFIER '*' IDENTIFIER '=' IDENTIFIER ';'; 然後我把struct_initialize的規則如下: struct_declaration : str

    0熱度

    1回答

    的一部分,我是新來使用Flex和野牛我實現了一個簡單的計算器。我試圖確定輸入是否是語法中的一個句子。 例如,如果我輸入:A = 2; b = 3;打印a + b; 這將返回:「A = 2; B = 3;打印A + B;是一句」 現在它會怎麼做的計算器,但我不關心實際計算我只是想知道輸入是否是語法中的一個句子。 我真的不知道如何去這樣做。任何幫助或提示將不勝感激。 我的Flex代碼是: %{

    -2熱度

    1回答

    我正在嘗試構建我的第一個C語言編程語言,可能是一個解釋器,我剛剛完成了第一步,即詞法分析器。 我想過通過簡單地將整個源代碼流整合到一個文件中,然後讓解析器處理數據。 我注意到許多其他編譯器和解釋器只在解析時解析器模塊要求另一個標記時出現lex。 從程序的代碼性能來看,它是否更快速地將源代碼一次全部解析出來,然後分別解析得到的令牌或lex和解析令牌?

    0熱度

    1回答

    我正在設計一個接受簡單c代碼的lex,其中我想要一個接受多個分號的規則。我試過(; {2,})&(;; +)但它不接受。 語句法是去工作的是 int i=1; i=3*2;;;; 而且我想補充的正則表達式,從而允許其報表。因爲C驗證;;;;。