-1
나는 Flex & Bison 프로젝트 작업 중입니다. 나는 플렉스 & 들소 완벽하게 작동하지만 진정한 argv 입력 문자열을주고있어. 그래서 저는 yyin을 변경하여 argv [1]를 취했지만 실제로 작동하지 않습니다. 그냥 무시합니다. 여기Argv의 Flex & Bison yyin []
#include "parser.hpp"
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
extern FILE* yyin;
yyin = fopen(argv[1],"r");
yyparse();
}
그리고 내 메이크입니다 :
all: bison flex main.cpp
g++ parser.cpp lexer.cpp main.cpp -o parser
rm lexer.cpp parser.cpp parser.hpp
bison: parser.y
bison -o parser.cpp parser.y
flex: lexer.l
flex -o lexer.cpp lexer.l
가 그럼 난 이렇게 실행 ./parser "(2+5)"
는하지만 아무것도하지 않는
여기 내 main.c에있다. 아마도 내가 올바른 방법으로하지 않을 것입니다.
'fopen'이 실제로하는 일을 살펴 봐야한다고 생각합니다. – rici
예, 나는 그것을 예제에서 가져 왔지만, 우리가 fopen을 사용한다는 이상한 것처럼 보입니다. 하지만 난 기본적으로 wright 수 없습니다 'yyin = argv [1]; ' 유형이 일치하지 않기 때문에. 죄송합니다. 나는 바보 같은 질문을하고 있습니다. –
@ G.Courmont : ** (2 + 5) **라는 파일을 열어 읽으려고합니다. –