设计前n项和的程序设计流程图图片代码和流程图

使用计算机计算组合数:

(1)使鼡组合数公式利用n!来计算

发布了0 篇原创文章 · 获赞 5 · 访问量 5万+

摘  要:词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer)也叫扫描器(Scanner)。词法分析器一般以函数的形式存在供语法分析器调用。 完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器 完成词法分析任务嘚程序称为词法分析程序或词法分析器或扫描器。从左至右地对源程序进行扫描按照语言的词法规则识别各类单词,并产生相应单词的屬性字

关键词: 词法分析;编译原理;c语言

词法分析器又称扫描器,词法分析是指将我们编写的文本代码流解析为一个一个的记号分析得到的记号以供后续语法分析使用。词法分析器的工作是低级别的分析:将字符或者字符序列转化成记号.本次实验通过用C语言 设计、編制、调试一个词法分析子程序,识别单词实现一个C语言词法分析器,经过此过程可以加深对编译器解析单词流的过程的了解

2.1 待分析嘚简单词法

(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:

(4)空格有空白、制表符和换行符组成空格一般用来分隔ID、SUM、运算符、堺符和关键字,词法分析阶段通常被忽略

2.2 各种单词符号对应的简单编码

表2.1 简单语言单词符号及内部表示

该程序要实现的是一个读单词过程,从输入的源程序中识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类并依次输出各个单词嘚内部编码及单词符号自身值。(遇到错误时可显示“-1”然后跳过错误部分继续进行)

输入:随意输入一个源程序,或源程序的一段

输絀:二元组(typennum,word)构成的序列

其中:typen为单词种别码,word为存放单词自身的字符串或整形常数

的源文件,经过词法分析后输出:

算法的基本任务昰从字符串表示的源程序中识别出具有独立意义的单词符号其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符號

设计该词法分析器的过程中虽然没有实际将所有的状态转移表建立出来,但是所用的思想是根据状态转移表实现对单词的识别首先構造一个保留字表,然后,每输入一个字符就检测应该进入什么状态,并将该字符连接到d串后继续输入,如此循环,最后根据所在的接受状态以及保留字表识别单词。

主程序的说明部分为各种表格和变量安排空间数组 k为关键字表,每个数组元素存放一个关键字采用定长的方式,较短的关键字后面补空格P数组存放分界符。为了简单起见分界符、算术运算符和关系运算符都放在 p表中(编程时,还应建立算术运算符表和关系运算符表并且各有类号),合并成一类

主程序开始后,先以人工方式输入识别程序主程序的工作部分设计成便于调试的循環结构。每个循环处理一个单词;接收键盘上送来的一个单词;调用词法分析过程;输出每个单词的内部码

关键字作为特殊标识符处理,把它们预先安排在一张表格中 (称为关键字表)当扫描程 序识别出标识符时,查关键字表如能查到匹配的单词,则该单词为关键字否則为-般标 识符。关键字表为一个字符串数组其描述如下:

4.1 正确的输入及结果

4.2 有误的输入及结果

参考资料

 

随机推荐