Я работаю над Flex & Проект Bison. Я получил свой flex & bison отлично работает, но я пытаюсь дать true argv входную строку. Поэтому я изменил yyin так, чтобы он взял argv [1], но на самом деле он не работает. Он просто игнорирует это.Flex & Bison yyin от Argv []
Вот моя 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) ** и прочитать его. –