c语言词法分析器 本报告内容完整,包含各种说明与可运行的代码
2021-10-23 09:49:07 397KB 词法分析器完整实验报告
1
手工构造简单词法分析程序,编译原理里面的,程序完美运行,是用VS2013写的 了解词法分析程序的基本构造原理,掌握简单词法分析程序的手工构造方法。 1、输入的常量说明串,要求最后以分号作结束标志; 2、根据输入串或读入的文本文件中第一个单词是否为“const”判断输入串或文本文件是否为常量说明内容; 3、识别输入串或打开的文本文件中的常量名。常量名必须是标识符,定义为字母开头,后跟若干个字母,数字或下划线; 4、根据各常量名紧跟等号“=”后面
2021-10-23 09:05:31 30KB 编译原理 词法分析
1
【问题描述】 请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格式统一定义; (2)为了方便进行自动评测,输入的被编译源文件统一命名为testfile.txt(注意不要写错文件名);输出的结果文件统一命名为output.txt(注意不要写错文件名),结果文件中每行按如下方式组织: 单词类别码 单词的字符/字符串形式(中间仅用一个空格间隔) 单词的类别码请统一按如下形式定义: 单词名称 类别码 单词名称 类别码 单词名称 类别码 单词名称 类别码 标识符 IDENFR else ELSETK - MINU = ASSIGN 整形常量 INTCON switch SWITCHTK * MULT ; SEMICN 字符常量 CHARCON case CASETK / DIV , COMMA 字符串 STRCON default DEFAULTTK < LSS ( LPARENT const CONSTTK while WHILETK GRE [ LBRACK char CHARTK scanf SCANFTK >= GEQ ] RBRACK void VOIDTK printf PRINTFTK == EQL { LBRACE main MAINTK return RETURNTK != NEQ } RBRACE if IFTK + PLUS : COLON 【输入形式】testfile.txt中的符合文法要求的测试程序。 【输出形式】要求将词法分析结果输出至output.txt中。 【特别提醒】(1)读取的字符串要原样保留着便于输出,特别是数字,这里输出的并不是真正的单词值,其实是读入的字符串,单词值需另行记录。 (2)本次作业只考核对正确程序的处理,但需要为今后可能出现的错误情况预留接口。 (3)在今后的错误处理作业中,需要输出错误的行号,在词法分析的时候注意记录该信息。 (4)单词的类别和单词值以及其他关注的信息,在词法分析阶段获取后,后续的分析阶段会使用,请注意记录;当前要求的输出只是为了便于评测,完成编译器中无需出现这些信息,请设计为方便打开/关闭这些输出的方案。 【文法定义】请到“2020年文法定义(用于查看文法,不计入成绩)”作业中查看文法 【样例输入】 coNst int cONst1 = 001, const2 = -100; const char const3 = '_'; int change1; char change3; int gets1(int var1,int var2){ change1 = var1 + var2; return (change1); } void main(){ printf("Hello World"); printf(gets1(10, 20)); } 【样例输出】 CONSTTK coNst INTTK int IDENFR cONst1 ASSIGN = INTCON 001 COMMA , IDENFR const2 ASSIGN = MINU - INTCON 100 SEMICN ; CONSTTK const CHARTK char IDENFR const3 ASSIGN = CHARCON _ SEMICN ; INTTK int IDENFR change1 SEMICN ; CHARTK char IDENFR change3 SEMICN ; INTTK int IDENFR gets1 LPARENT ( INTTK int IDENFR var1 COMMA , INTTK int IDENFR var2 RPARENT ) LBRACE { IDENFR change1 ASSIGN = IDENFR var1 PLUS + IDENFR var2 SEMICN ; RETURNTK return LPARENT ( IDENFR change1 RPARENT ) SEMICN ; RBRACE } VOIDTK void MAINTK main LPARENT ( RPARENT ) LBRACE { PRINTFTK printf LPARENT ( STRCON Hello World RPARENT ) SEMICN ; PRINT
2021-10-22 17:03:05 25KB 编译原理
1
编译原理课程设计的第一部分,一个PASCAL语言子集(PL/0)词法分析器的设计与实现,包含基本的测试文件。
2021-10-22 09:33:46 30KB 编译原理 课程设计 词法分析
1
南京航空航天大学编译原理实验 上机一 词法分析器,基于pascal
2021-10-17 22:09:23 28KB 编译原理 词法分析器
1
加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。 1.关键字:if、int、for、while、do、return、break、continue;单词种别码为1。 2.标识符;单词种别码为2。 3.常数为无符号整形数;单词种别码为3。 4.运算符包括:+、-、*、/、=、、<、=、<=、!= ;单词种别码为4。 5.分隔符包括:,、;、{、}、(、);单词种别码为5。
2021-10-17 14:23:59 42KB 编译原理 词法分析
1
学编译原理的同学可以参考,不会的编译原理实验的同学可以下载,编译通过,很好用。
2021-10-16 22:47:35 10KB 词法分析器
1
编译原理 词法分析器实现程序 C ||C++ 编译原理 词法分析器实现程序 C ||C++
2021-10-16 22:18:26 3KB c程序 C++
1
设计词法分析器 设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。功能包括: a. 具备预处理功能。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序; b. 能够拼出语言中的各个单词; c. 返回(种别码, 属性值)。
2021-10-16 09:15:27 11KB c/c++ conio
1
#include #include #include #include using namespace std; #define de(x) cout<<#x<<" = "<
2021-10-15 23:17:10 8KB 词法分析
1