을 사용하여 입력 파일을 토큰 화하여 결국 Bison
을 사용하여 간단한 C 컴파일러를 만들 수 있습니다.C 식별자의 정규 표현식
그래서 나는 아직도 Flex
와 장난 그리고 난 번호를 추출하고 식별자를 무시하기 위해 노력하고있어 및 공백
%{
#include "stdio.h"
%}
dgt [0-9]
letter [A-Za-z]
white [ \r\t]+
id {letter}({letter}|{dgt})*
number {dgt}+
%%
{number} return atoi(yytext);
{id} { }
{white} { }
%%
void main(){
int val=0;
while((val=yylex())>0)
printf("You Entered %d\n",val);
}
여기서 문제는 이와 같은 입력 파일과 :
hello 123 test assadf507ascv 123asd 0
내가 recog 할 필요
You Entered 123
You Entered 123
:
나는이 출력을 얻을 두 번째 출력은 유효하지 않은 식별자 인 123asd
에서 나온 것입니다.
어디서 잘못 됐습니까? !! 사례를 명시 적으로 탐지하는 규칙을 만들어야합니까?
볼 수 있지만, 사용하는 이유는 후행? 그냥 연결하지 않는 이유는 무엇입니까? – Maverick
아, 그래. 죄송합니다. 다른 규칙을 사용하지 않고 숫자 만 일치시키는 단일 규칙을 얻으려고 할 때 후행 맥락에서 놀고있었습니다. [0-9] +/[^ a-zA-Z_]와 같은 것입니다. 하지만 그 방법은 효과가 없었고 최종 솔루션을 위해 후행 할 필요가 없다는 사실을 잊어 버렸습니다. 답변이 업데이트되었습니다. –
위대한, 나를 위해 일해도 고마워. – Maverick