要在您的计算机上安装 Bison C++ 编译器,请按照以下步骤操作:
bison --version
如果未安装 Bison,请访问 GNU Bison 官方网站 并按照说明进行安装。对于大多数操作系统,您可以使用包管理器(如 apt、yum 或 brew)轻松地安装 Bison。例如,在 Ubuntu 或 Debian 系统上,您可以运行以下命令:
sudo apt-get install bison
sudo apt-get install g++
%{
#include<iostream>
using namespace std;
extern "C" int yylex();
void yyerror(const char *s) {
cout << "Error: " << s << endl;
}
%}
%union { int val; }
%token <val> NUM
%type <val> exp
%%
exp: exp '+' NUM { $$ = $1 + $3; }
| exp '-' NUM { $$ = $1 - $3; }
| NUM { $$ = $1; }
;
%%
int main() {
yyparse();
return 0;
}
extern "C" int yywrap() {
return 1;
}
calc.y
。然后,使用 Bison 生成 C++ 代码:bison -d calc.y
这将生成两个文件:calc.tab.cpp
(包含 Bison 生成的解析器代码)和 calc.tab.hpp
(包含 Bison 生成的头文件)。
lexer.l
的 Flex 文件,用于词法分析:%{
#include "calc.tab.hpp"
%}
%%
[0-9]+ { yylval.val = atoi(yytext); return NUM; }
\+ { return '+'; }
\- { return '-'; }
[ \t] { /* ignore whitespace */ }
. { yyerror("Invalid character"); }
%%
flex lexer.l
这将生成一个名为 lex.yy.c
的文件,其中包含 Flex 生成的词法分析器代码。
g++ -o calc calc.tab.cpp lex.yy.c
calc
来计算算术表达式。例如:./calc
这将启动一个交互式会话,您可以在其中输入算术表达式并查看结果。