-1
我正在研究Flex & Bison項目。我得到了我的flex &野牛完美的工作,但我試圖給真正的argv輸入字符串。所以我改變了yyin,以至於花了argv [1],但它實際上並不工作。它只是忽略它。來自Argv的Flex&Bison yyin []
這裏是我的main.c:
#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();
}
這裏是我的makefile:
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)"
但不起任何作用。 也許我沒有按照正確的方式去做。
我想你應該看看'fopen'實際上做了些什麼。 – rici
是的,我把它從一個例子中拿出來,但對我來說似乎很奇怪,我們使用fopen。但我基本上不會懷疑 'yyin = argv [1];' 因爲類型不匹配。 對不起,如果我問愚蠢的問題。 –
@ G.Courmont:您正試圖打開名爲**(2 + 5)**的文件並從中讀取。 –