YACC2025年7月1日 | 阅读3分钟 ![]()
编译器设计中 YACC 程序的组成部分现在让我们逐一详细解释每个部分定义:这些部分包含头文件和语法中使用的任何标记信息。它位于输入文件的顶部。在这里,标记使用模数符号定义。 规则:这定义了扫描标记时要采取的操作。 辅助例程:它包含 main() 函数,其中始终调用 yyparse() 函数。yyparse() 函数在读取标记、执行操作,然后在执行后返回到 main() 中起着重要作用。 关于 YACC 的一些重要点![]() 输入:一个 CFG- file.y 输出:一个解析器 y.tab.c (yacc)
基本操作顺序如下 ![]() 此文件包含 YACC 格式的所需语法。 ![]() 它显示了 YACC 程序。 ![]() 它是 YACC 创建的 C 源代码程序。 ![]() C 编译器 ![]() 可执行文件,将解析 gram.Y 中给出的语法 YACC 程序的例子YACC 文件 (demo.y)Lex 文件 (demo.l)说明:在上面的例子中,我们创建了 2 个文件,例如 YACC 文件 (demo.y) 和 Lex 文件 (demo.l)。在此,要编译一个程序,打开一个终端并转到您保存文件的目录。之后,运行命令以生成 C 源代码文件,例如 "yacc -d demo.y"。这将创建两个输出文件,例如 y.tab.c 和 y.tab.h。这两个文件用于编译生成的 C 源代码文件,并将其与 C 编译器(例如 GCC "gcc -o demo y.tab.c -ly")使用的 Yacc 运行时库链接。最后,通过键入其名称并按回车键来运行已编译的程序 bash ./demo YACC 程序中的错误处理以下是用于 YACC 程序中错误处理的技术列表
关于 YACC 的常见问题解答1. 在编译器设计中,术语 yyerror 的含义是什么? 这是一个用户定义的函数,用于在解析过程中处理语法错误。它基本上用于显示错误消息以进行调试。 2. 在编译器设计中,YACC 的含义是什么? 它由 Stephen C. Johnson 于 1970 年代开发。它充当一个用于语法规范的机器,并将其转换为能够将输入标记结构化为逻辑语法树的可执行代码。 下一主题上下文无关文法 |
我们请求您订阅我们的新闻通讯以获取最新更新。