diff --git a/docs/appendix/faq.md b/docs/appendix/faq.md new file mode 100644 index 0000000..0425276 --- /dev/null +++ b/docs/appendix/faq.md @@ -0,0 +1,19 @@ +# FAQ + +## 为什么我的 lexer/parser 卡住了 + +flex/bison 默认从 `stdin` 读入输入, 由于 `\n` 也会视为输入的一部分, 你需要手动输入 `EOF` 结束, 这在 `bash` 上是 `Ctrl+D`. + +如果你想从文件里输入的话 (比如 `./compiler test.in`), 这里提供一个供参考的解决方法: + +```cpp +extern int yyparse(); + +extern FILE* yyin; + +int main(int argc, char **argv) { + yyin = fopen(argv[1], "r"); + yyparse(); + return 0; +} +``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index d5eeb0a..997f872 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -40,6 +40,7 @@ nav: - SysY 语言规范: appendix/sysy-spec.md - SysY 运行时库: appendix/sysy-runtime.md - Accipit IR 规范: appendix/accipit-spec.md + - FAQ: appendix/faq.md plugins: - search