第一章 flex单词计数程序

学习Flex&Bison目标, 读懂SQLite中SQL解析部分代码

Flex&Bison简介
Flex做词法分析
Bison做语法分析

第一个Flex程序, wc.fl, 单词计数程序

%{
int chars = 0;
int words = 0;
int lines = 0;
%}
%%
[a-zA-Z]+ { words++; chars += strlen(yytext); }
\n { chars++; lines++; }
. { chars++; }
%%
main(int argc, char **argv)
{
yylex();
printf("%8d%8d%8d\n", lines, words, chars);
}

程序说明
程序包含3部分
1. 声明和选项设置
2. 模式和动作
3. 会被拷贝到生成的词法分析器里的C代码

1. 声明部分的代码, 会被原样拷贝到C代码头文件中
2. 模式部分是: 正则表达式+C代码{}
3. yylex()是词法分析程序入口, 有主程序main调用

编译执行
flex wc.l
cc lex.yy.c -lfl
./a,out
然后在标准输入, 输入文字
^D
得到结果

时间: 2024-12-25 21:00:05

第一章 flex单词计数程序的相关文章

第一章 为什么要学习编写程序?

写程序(或叫做编程)是一件非常有创造性和有回报的工作.需要编程来解决问题的原因有很多,但是你可以用编程来解决自己生活上遇到困难的数据分析问题,这是一种乐趣,同时也可以帮助别人来解决相同的问题,这或许是你用来学习编程的一个值得考虑的原因.本书假定每个人都需要学会编程,一旦当你学会编程时,你就可以会使用这个编程技能来解决你所有遇到的问题了. 在我们目前的日常生活中,已经缺少不了计算机,从笔记本到智能手机都在大量地使用.我们都在把这些计算机当作我们的个人助手了,因为这些计算机都对我们提供了很多帮助.目

第一章练习题登陆认证程序

基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) info = [["name1", "111"], ["name2", "222"], ["name3", "333"], ["name4", "444"]] count = 2 while count

《程序员修炼之道---从小工到专家》第一章读后感

<程序员修炼之道---从小工到专家>一书由美国Andrew Hunt和David Thomas所著,主要讲述了一位程序员应当如何从个人责任,职业发展,到基本工具,实际的编程项目中发展自己.本书第一章的标题为:注重实效的哲学. 第一章整体主要从程序员个人对待团队,同事,领导,以及自己的前途发展,学习时应当持有的态度出发入手,讲述了程序员在公司中应有的职业操守和准则.作者在开篇时向我们讲述了应当如何成为一位高效的程序员,而后则是分别从各各的方面论述这一观点.首先 第一点是:要对事负责.在工作中如果

第二章 flex输入输出

flex程序默认总是从标准输入读取, 实际上,词法分析程序都从文件读取输入 flex总是通过名为yyin的文件句柄读取输入, 下面的例子,我们修改单词计数程序,使得它能从文件读取输入 /* even more like Unix wc */ %option noyywrap %{ int chars = 0; int words = 0; int lines = 0; %} %% [a-zA-Z]+ { words++; chars += strlen(yytext); } \n { chars

[读书笔记]算法(Sedgewick著)·第一章(1)

到家放松之后就开始学习算法了,手里拿的是拿的是一本Robert Sedgewick的橙皮书<算法(第四版)>的.这本书与导论那本书的不同之处在于轻数学思想.重实现,也就是说这是一本很不错的基础编程书.拿来做书中的练习还是蛮不错的,封面说有50种算法哦.思维导图如下,就且学且更新吧. 1.基本编程模型 第一章开始讲述用程序实现算法的优点:程序是对算法精确.优雅和完全的描述:可以通过运行程序来学习算法的各种性质:可以在应用程序中直接使用这些算法.还有这种学习算法的缺点缺点:分离思想和实现细节的困难

第一章总结

本书第一章标题为"软件=程序+软件工程",如标题所言,在开头就十分精炼地概述了"软件"的概念,这样哪怕读者是门外汉,这一部分对于他们来说也很浅显易懂好消化,至少不会一上来就被一棍打懵.通过灵活又务实地举例子,把编程的意义.软件工程的概念等等都尽可能清晰而具象地向读者剖析出来. 软件工程的工程二字意味着它与许多工程领域的学科,以及管理学科有很大关系,创造性地运用科学原理,设计和实现建筑.机器.装置或生产过程:或者是在实践中使用一个或多个上述实体:或者是实现这些实体的过

《算法》第一章部分程序

? 书中第一章部分程序,加上自己补充的代码.包括若干种二分搜索和寻找图上连通分量数的两种算法. ● 代码,二分搜索 1 package package01; 2 3 import java.util.Arrays; 4 import edu.princeton.cs.algs4.StdRandom; 5 6 public class class01 7 { 8 public int binarySearch(int [] a, int target) // 非递归实现 9 { 10 int lp

在Win7(64位)使用VS2015运行《OpenGL编程指南》第八版第一章程序的方法

前言:笔者第一次用vs2015来实现<OpenGL编程指南>第八版第一个程序时确实花费了不少时间,按照网上教程,尝试了各种方法,最终花费了两个上午加一个下午的时间, 成功运行了程序,花了这么多时间,确实让人懊恼,现在把运行程序的步骤记录下来,以便查阅. 1.第一步,下载oglpg-8th-edith. 如果去书本上的官网下载,下载的是第九版的,而不是第八版的源码. 去其他网站下载,下载的这个包里面没有第一章的源码,可以网上黏贴其他人的代码,建议下第八版源码,下载网址:链接:http://pan

第一章:C语言概述及如何上机运行C程序

第一章:C语言概述及如何上机运行C程序 让编程改变世界 Change the world by program C语言概述 C语言的发展过程 C语言是在 70 年代初问世的.一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言.同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书.通常简称为<K&R>,也有人称之为<K&R>标准.但是,在<K&R>中