Flex 和 Bison 教程

说明:本篇内容译自 Santa Clara University COEN 259 编译原理课程讲义,用于学习 Flex 和 Bison 编译器工具。 本篇内容为个人学习,不构成任何商业用途。 Flex Flex 是一个用于词法分析的扫描器生成工具,它基于有限状态机 (FSM)。输入是一组正则表达式,输出是根据输入规则实现扫描器的代码。 为了实现计算器的一个扫描器,我们可以将文件 “cal1.l” 编写如下: /* this is only for scanner, not link with parser yet */ %{ int lineNum = 0; %} %% "(" { printf("(\n"); } ")" { printf(")\n"); } "+" { printf("+\n"); } "*" { printf("*\n"); } \n { lineNum++; } [ \t]+ { } [0-9]+ { printf("%s\n", yytext); } %% int yywrap() { return 1; } int main () { yylex(); return 0; } 这是用于构建扫描器的 Makefile: ...

May 23, 2026 · 3 min · farmer3-c