lex 의 yyin 에 관해서...

kldp에서 lex에 관해서 보다가 의문점이 있어 글올립니다.
예제를 보면
%{
/* need this for the call to atof() below */
#include
%}
DIGIT [0-9] /* 매크로를 정의한다 */
ID [a-z][a-z0-9]*
%%
{DIGIT}+ { printf( "An integer %s (%d)\n", yytext, atoi( yytext ) ); }
{DIGIT}+"."{DIGIT}* { printf( "A float %s (%g)\n", yytext, atof(
yytext ) );
}
if|then|begin|end|procedure|function { printf( "A keyword %s\n",
yytext ); }
{ID} { printf( "An identifier %s\n", yytext ); }
"+"|"-"|"*"|"/" { printf( "An operator %s\n", yytext ); }
"{"[^}\n]*"}" ; /* { } 안의 내용은 주석으로 무시한다. */
[ \t\n]+ ; /* whitespace를 무시한다. */
. printf( "Unrecognized character %s\n", yytext );
%%
main( argc, argv )
int argc;
char **argv;
{
++argv, --argc; /* skip over program name */
if ( argc > 0 )
yyin = fopen( argv[0], "r" );
else
yyin = stdin;
yylex();
}
라고 되어있습니다.
그중 바로 위에 있는 yyin에 관해서 입니다.
yyin은 file스트림만 입력값으로 받을수 있는건가요?
아니면 다른 배열의 포인터도 입력값으로 받을수 있나요?
그냥 궁금해서....
해~~ 맨날 여기서 질문만 하고 사내용.. ^^;
lex는 모르지만...
소스는 C언어로 변환이 되는 부분이므로... ^^;
첫번째는 파일을 여는 부분이므로 파일포인터만이 들어가겠죠.
두번째는 stdin이므로 리다이렉트를 이용한 파일입력이나
키보드 입력을 받아들이겠네요.
결국 둘다 파일포인터만을 받아들인다는 결론이 나오는군요. ^^;
stdin도 파일포인터형태이므로...
배열의 포인터로 하려는 의도는 무엇인지 궁금하지만... 조금만
머리를 굴리면... 포인터의 내용을 그대로 파일로 작성을하고
그것을 rewind시켜서 그 포인터를 yyin에 넘기면 되겠죠? ^^;
댓글 달기