lex를 이용해서 프로그래밍을 하고 있습니다.
글쓴이: cinemamoon / 작성시간: 일, 2011/03/27 - 12:20오전
lex라는 놈을 처음배워서 열심히 공부하는 중인데요..
사용자가 scanf로 입력한 변수를 regular expression에서 사용할 수 있을까요?
예를 들어..
%{
char input[100];
%}
%%
.*input {printf("%s",yytext);}
%%
main()
{
//사용자 입력 및 yylex();
}
뭐 이런식으로.. 저렇게 하면 안되지만 제가 쓰고싶은건 사용자가 입력한 내용을 regular expression안에 넣을 수 있을까요?
아니면.. 다른방법이 있나요 ㅠ
Forums:
궁금해서 알아봤습니다.
예상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);
}
댓글 달기