-1
私はFlexの作業をしています& Bisonプロジェクト。私はフレックス& bisonが完璧に働いていますが、私は真の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();
}
そして、ここでは私のメイクです:
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
ええ、私はexempleからそれを取ったが、私たちがfopenを使用する私には奇妙に見えます。しかし、私は基本的にはwrightできません 'yyin = argv [1]; ' タイプが一致しません。 申し訳ありません、私は愚かな質問をしています。 –
@ G.Courmont:あなたは**(2 + 5)**と呼ばれるファイルを開き、そこから読み取ろうとしています。 –