lex

    1熱度

    1回答

    我學習做一個編譯器,它有一個像一個字符串的一些規則: char ch[] ="abcd"; 和多串: printf("This is\ a multi\ string"); 我寫的正則表達式 STRING \"([^\"\n]|\\{NEWLINE})*\" 它的工作原理單線字符串很好,但它不適用於多行字符串,其中一行以'\'字符結尾。 我應該改變什麼?

    0熱度

    1回答

    我正在尋找一種方式方法來匹配/和\ 例如:如果我得到的字符串「你好!\先生/」我想打個招呼/先生/!

    0熱度

    1回答

    我想實現一個簡單的if語句在Flex和野牛以下形式: (表情)(表情) 如果左邊表達式是非零?值,那麼正確的表達式將被執行。 使用Bison語法規則,任何人都可以告訴我一個如何做到這一點的例子嗎? 這裏是我的野牛代碼PIEC這顯示了我到目前爲止有: %union{ int d; char *s; } %token <d>INTEGER %token <s>VARIABLE %nona

    0熱度

    1回答

    我正在挖掘用flex構建的詞法分析器(準確地說是here),並試圖瞭解發生了什麼。從來沒有看過C,我已經放棄試圖找到相當於understand parsers made with Bison,所以我希望在這裏獲得一些基本信息,從lex.yy.c中的查找表包含什麼開始: static yyconst short int yy_accept[33] = { 0, 0, 0, 15, 13,

    0熱度

    1回答

    好話題爲自己代言的一個代碼在這裏的例子(編譯之前的lex文件):試圖在vs13運行時 %{ #include<stdio.h> int Upperc=0; int Lowerc=0; %} %% [A-Z] {printf("Upperccase\t");Upperc++;} [a-z] {printf("Lowerccase\t");Lowerc++;} %% mai

    0熱度

    1回答

    我想學習如何使用柔性總是在不斷變化,我有一些問題: 每次當找到一個記號,我希望它是在一個令牌存儲裝置一次我創建,該部分工作得很好! 這個問題開始時,它會得到下一個令牌,例如,如果我寫道: 「a bcd」,它應該將其標識爲令牌a,然後作爲令牌bcd,而不是我下一個: 令牌(在第一次掃描), 並且在第二掃描我得到2個令牌: 令牌的 令牌的BCD。 我在想什麼? (當識別出bcd時,由於某種原因它只是將

    1熱度

    1回答

    我試圖在Windows上使用FLEX創建一個詞法分析器。 我總是得到一個錯誤: "undefined reference to `yylval'" 我宣佈的yylval爲extern型了,所有的定義是由如下: %option noyywrap %{ #include<stdio.h> #include<stdlib.h> #include "token

    0熱度

    1回答

    我剛剛開始使用lex編程。第一項任務是從文件中分離元音和輔音。我寫的元音規則是 - [ aeiouAEIOU ] {return VOWEL};對於輔音來說,編寫代碼將會非常繁瑣 - [b-dB-D.....]。有沒有類似{alphabets} - {unwanted chars}的方法?

    0熱度

    1回答

    我試圖從解析的文本文件中識別出十六進制數,並且所有內容都大概99%準確,但是我一直對這個特定的實例0xa98h存在問題。每當它找到這條線時,它將輸出0xa98,而不是完全忽略它,因爲它是無效的。我已經對這段代碼嘗試了很多變體,並且尚未找到排除該問題的方法。 [-]?[0][x|X][0-9A-F]+ {cout << yytext << " Number" << endl; }

    0熱度

    1回答

    當執行下面的Makefile: # %W% %G% # make and run all the example programs for # lex & yacc, Second Edition CC = gcc -g LIBS = -ly -ll LEX = flex YACC = yacc -dv CFLAGS = -DYYDEBUG=1 all: sql1 # ch