编译原理 - 在 Windows 平台下使用 Flex 和 Bison

本文档介绍了如何在Windows环境下利用Flex和Bison工具,来创建一个支持加减乘除、乘方、开方、位运算及阶乘等高级功能的计算器。实验要求包括实现各种算术运算,并提供了源代码片段,如calc.lex。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验要求:

参考范例程序, 用 Flex 和 Bison 实现一个功能更为强大的计算器,包含以下运算:

a) 加、减、乘、除运算

b) 乘方、开方运算

c) 位运算– 与 & 、或 |、非 ~...

d) 阶乘运算 ! 

源代码:

calc.lex:

%{  
    /*  
     *  一个简单计算器的Lex词法文件  
     */  
    #include <stdlib.h>  
      
    void yyerror(char*);  
%}  
  
%%  
  
     /* a-z为变量 */     
[a-z]   {  
            yylval = *yytext - 'a';  
            return VARIABLE;  
        }  
  
    /* 整数 */  
[0-9]+  {  
            yylval = atoi(yytext);  
            return INTEGER;  
        }  
  
    /* 运算符 */  
[-+()=/*^#&|~SCTLEN%\n] {return *yytext;}  
  
    /* 空白被忽略 */  
[ \t]    ;  
  
    /* 其他字符都是非法的 */  
.    yyerror("无效的输入字符");  
  
%%  
  
int yywrap(void)  
{  
  return 1;  
}  

clac.y:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值