当前位置: 首页 > news >正文

flex与bison学习之字符统计程序

第一章例子-字数统计
运用正则表达式来统计各类字符
代码(001_1_word_count.l)如下:

/* 变量定义 */
%{
int chars = 0;
int words = 0;
int lines = 0;
%}
%%[a-zA-Z]+ { words++; chars += strlen(yytext); } /* 匹配26个英文字母,包含大写、小写形式 */
\n        { chars++; lines++; } /* 匹配一个换行符 */
.         { chars++; } /* 匹配任意一个字符,除上述两个规则外的其他字符 */
%%main(int argc, char ** argv)
{yylex(); /* 调用flex提供的词法分析例程yylex() *//* 打印统计输出 */printf("number of lines=%8d\n", lines); /* 行数 */printf("number of words=%8d\n", words); /* 单词数 */printf("number of chars=%8d\n", chars); /* 字符数 */
}

Makefile(001_1_word_count.Makefile)如下:

FILE_NAME = 001_1_word_countFLEX_INPUT_FILE = $(FILE_NAME).l
FLEX_OUTPUT_FILE = $(FILE_NAME).c
FLEX_CMD = flex
FLEX_FLAG = -oGCC_CMD = gcc
GCC_COMPILE_FLAG = -c
GCC_OUTPUT_FLAG = -o
GCC_LINK_FLAG = -lfl
GCC_OBJECT_FILE = $(FILE_NAME).oTARGET_FILE = $(FILE_NAME)all: clean flex_main gcc_mainflex_main: $(FLEX_INPUT_FILE)$(FLEX_CMD) $(FLEX_FLAG) $(FLEX_OUTPUT_FILE) $(FLEX_INPUT_FILE)gcc_main: $(FLEX_OUTPUT_FILE)$(GCC_CMD) $(GCC_COMPILE_FLAG) $(FLEX_OUTPUT_FILE) $(GCC_OUTPUT_FLAG) $(GCC_OBJECT_FILE)$(GCC_CMD) $(GCC_OBJECT_FILE) $(GCC_LINK_FLAG) $(GCC_OUTPUT_FLAG) $(TARGET_FILE).PHONY: cleanclean:@rm -f $(FLEX_OUTPUT_FILE)@rm -f $(GCC_OBJECT_FILE)@rm -f $(TARGET_FILE)

编译指令如下:

 make -f 001_1_word_count.Makefile

image
测试指令如下:

 ./001_1_word_count# 输入如下英文句子,按Ctrl+D结束输入
Don't put off till tomorrow what you can do today.
Where there is a will, there is a way.

image
输出信息如下:
image

http://www.jsqmd.com/news/403331/

相关文章:

  • 含共享储能的园区多类型负荷需求响应经济运行研究附Matlab代码
  • 含中间直流的三相电力电子变压器PET仿真模型附Simulink仿真
  • D证科目一罚款专题
  • Java 运行时异常和编译时异常之间的区别是什么?
  • 光伏阵列常见故障仿真模型附Simulink仿真
  • 根脉与花开:AI元人文——***文化思想在智能时代的原创性理论发展
  • 什么是 Java 中的自动装箱和拆箱?
  • 光伏储能直流系统MATLAB仿真(PV光伏阵列+Boost DCDC变换器+负载+双向DCDC变换器+锂离子电池系统)附Matlab代码
  • 基于1D-GAN生成对抗网络的数据生成方法研究附Matlab代码
  • 什么是 Java 中的迭代器(Iterator)?
  • 光储直流微电网附Simulink仿真
  • 什么是 Java 的网络编程?
  • 【开题答辩全过程】以 高校学生档案管理系统为例,包含答辩的问题和答案
  • 大模型搜索引爆营销新赛道,智跑AI以GEO系统引领智能获客潮流
  • Java 中的基本数据类型有哪些?
  • 基于ARIMA-CNN-LSTM预测模型研究附Python代码
  • D证-科目一
  • 官网-劳动人事争议仲裁办案规则
  • Java 的 I/O 流是什么?
  • 航天器交会的分布式MPC模型预测控制研究附Matlab代码
  • Java 的 Optional 类是什么?它有什么用?
  • 如果一个线程在 Java 中被两次调用 start() 方法,会发生什么?
  • 图论——最短路Dijkstra算法
  • 2026年保健品推荐:品质与口碑并存,养胃颗粒/保健饮品/保健品,保健品品牌有哪些 - 品牌推荐师
  • [NOI2018] 冒泡排序
  • 通过MATLAB控制COMSOL Multiphysisc仿真进程模拟局部放电,建立有限元仿真模型
  • 【GLM-5 陪练式前端新手入门】第四篇:卡片布局 —— 让个人主页内容更有层次
  • Splay进阶
  • 【GLM-5 陪练式前端新手入门】第三篇:网页导航栏 —— 搭建个人主页的 “指路牌”
  • [AI提效-17]-豆包图片生成功能新手入门指南