lex를 이용해서 프로그래밍을 하고 있습니다.

cinemamoon의 이미지

lex라는 놈을 처음배워서 열심히 공부하는 중인데요..
사용자가 scanf로 입력한 변수를 regular expression에서 사용할 수 있을까요?
예를 들어..

%{
char input[100];
%}

%%
.*input {printf("%s",yytext);}
%%
main()
{
//사용자 입력 및 yylex();
}

뭐 이런식으로.. 저렇게 하면 안되지만 제가 쓰고싶은건 사용자가 입력한 내용을 regular expression안에 넣을 수 있을까요?
아니면.. 다른방법이 있나요 ㅠ

shint의 이미지

예상A. 버퍼 내용을 변경해준다?
//C code
scanf("%s", &text);
//Lex code
[a-zA-Z][a-ZA-Z0-9]+ {words++; chars += yyleng;}

예상B. 출력문에서 변경해준다.
[a-zA-Z]+ { printf("OPERANDS ARE %s\n",yytext);

예상C.
[a-zA-Z_][a-zA-Z_0-9]* {
yylval.string = strdup( yytext );
return ( IDENTIFIER );
}

[ 참조링크 ]
http://hubpages.com/hub/lex-and-yacc-programs
http://www.mkssoftware.com/docs/wp/wp_lyuse.asp
http://stackoverflow.com/questions/5418181/flex-lex-encoding-strings-with-escaped-characters
http://www.ibm.com/developerworks/aix/tutorials/au-lexyacc/au-lexyacc-pdf.pdf
http://www.opensource.apple.com/source/flex/flex-24.1/flex/examples/manual/numbers.lex

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

int main(void)
{
scanf("%s",input);
YY_BUFFER_STATE bufs = yy_scan_string(input);
yy_switch_to_buffer(bufs);
yylex();
yy_delete_buffer(bufs);
}