To nie jest duplikat this question, ponieważ rozwiązaniem nie było użycie parsera!Interfejs Yacc/Bison Parser z programem C++
Mam parser Bison, który mogę uruchomić wykonując ./parser < file_to_parse
. Chcę wywołać parser Bison z mojego programu C++. To, czego nie chcę, to zrobić system(./parser < file_to_parse)
, ponieważ zakładałoby to, że parser jest wstępnie skompilowany, a wtedy mój cały program nie byłby niezależny od platformy.
Jeśli mam funkcję:
void foo(file_name) {
// call parser on file_name
}
to w jaki sposób można to zrobić? Jakieś pomysły? Myślę, że jest tak w przypadku wywoływania yyparse lub czegoś takiego, ale nigdzie się z tym nie dogaduję!
Dziękuję :).
Dziękuję Ernest .. wciąż walczę, ale mam nadzieję, że się tam dostanę. W rzeczywistości nie mam yylex() w moim lexer - Flex tworzy domyślny, który prawdopodobnie robi getchar(). Chyba muszę napisać własne w lexer czy coś takiego. – ale