编译原理词法分析器,识别标识符、保留字、特殊字符、数(十、八、十六进制整形浮点型长整形)、字符、字符串类型,输出二元式序列
2021-04-10 18:14:14 17KB c++
1
合工大编译原理实验一词法分析李宏芒 一、实验目的 通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。 二、功能描述 1) 可在界面文本框上手动输入或由文件读取方式导入.c或.txt文件内需要分析的程序段。 2) 如果发现错误则报告出错ERROR且将统计的行数和列数用于错误单词的定位 3) 删除空格类字符,包括但不限于‘\t’, ‘\r’, ‘\n’, ‘ ’. 4) 按拼写单词(关键字、标识符、常数、运算符、关系运算符、分界符号,错误),分别对应内码1,2,3,4,5,6,7,并用(内码,属性)二元式表示 5) 根据需要可任意扩充标识符表供以后更加广泛的范围使用 6) 对于二元运算符 ++、 --、 ==、 >=、 <= 可进行整体识别
2021-04-09 13:47:11 7KB lexic analyze 编译原理
1
C-Minus 的词法规则 (1)关键字: if else int return void while (2)专用符号: + - * / < >= == ~= = ; , ( ) [ ] { } /* */ (3)其他标记为 ID 和 NUM ,通过下列正则表达式定义: ID = letter letter* NUM = digit digit* letter = a|..|z|A|..|Z digit = 0|..|9 (4)空格由空白、换行符、制表符组成。 (5)注释由 /*...*/ 围起来,不能嵌套。 C-Minus 的语法规则 C-Minus 的 BNF 语法如下: 1. program -> declaration_list 2. declaration_list -> declaration_list declaration | declaration 3. declaration -> var_declaration | fun_declaration 4. var_declaration -> type_specifier ID; | type_specifier ID [ NUM ]; 5. type_specifier -> int | void 6. fun_declaration -> type_specifier ID ( params ) compound_stmt 7. params -> param_list | void 8. param_list -> param_list , param | param 9. param -> type_specifier ID | type_specifier ID [ ] 10. compound_stmt -> { local_declarations statement_list } 11. local_declarations -> local_declarations var_declaration | empty 12. statement_list -> statement_list statement | empty 13. statement -> expression_stmt | compound_stmt | selection_stmt | iteration_stmt | return_stmt 14. expression_stmt -> expression ; | ; 15. selection_stmt -> if ( expression ) statement | if ( expression ) statement else statement 16. iteration_stmt -> while ( expression ) statement 17. return_stmt -> return | return expression 18. expression -> var = expression | simple_expression 19. var -> ID | ID [ expression ] 20. simple_expression -> additive_expression relop additive_expression | additive_expression 21. relop -> <= | | >= | == | ~= 22. additive_expression -> additive_expression addop term | term 23. addop -> + | - 24. term -> term mulop factor | factor 25. mulop -> * | / 26. factor -> ( expression ) | var | call | NUM 27. call -> ID ( args ) 28. args -> arg_list | empty 29. arg8list -> arg_list , expression | expression 对以上每条文法规则,给出了相关语义的简短解释。 1. program -> declaration_list 2. declaration_list -> declaration_list declaration | declaration 3. dec
2021-04-08 18:59:04 9KB 编译原理实验
1
C++编写的词法分析器,能够分析出整数、实数,十进制数、八进制数、十六进制数,标识符,主要运算符和主要关键字等。Visual C++ 2008编译通过。
2021-04-08 10:40:08 7KB c++ 词法 词法分析 编译原理
1
带代码的实验报告,非原创,包含所有库。可直接运行。 使用DFA从文件读入词法分析表 实现所有加分项 关键字、标识符、+-*/%、字符串常量、16进制,8进制,浮点数………
2021-04-06 17:43:05 5.24MB 编译原理 哈工大 词法分析 dfa
1
使用C或C++构造C-的词法分析器实验 要求: 1、熟悉C-语言词法 2、构造DFA 3、设计数据类型、数据结构 4、用C或C++实现C-语言的词法分析器
2021-04-06 17:35:16 553KB C/C++ C-语言 词法分析器
1
(1)C++源代码扫描程序识别C++记号。 C++语言包含了几种类型的记号:标识符,关键字,数(包括整数、浮点数),字符串、注释、特殊符号(分界符)和运算符号等。 (2)打开一个C++源文件,打印出所有以上的记号。 (3)要求应用程序应为Windows界面。 (4)选作部分:为了提高C++源程序的可读性,C++程序在书写过程中加入了空行、空格、缩进、注释等。假设你想牺牲可读性,以节省磁盘空间,那么你可以存贮一个删除了所有不必要空格和注释的C++源程序的压缩文本。因此,程序中还应该有这样的压缩功能。 (5)选作部分:进一步思考或实现——如何进一步实现减小源文件大小的压缩功能。 (6)应该书写完善的软件文档。
2021-04-06 16:45:29 185KB aa
1
flex是知名的词法分析器,词法分析器的作用就不比多说了,关于这个工具网络上大部分的介绍都是使用,关于它的算法和原理的介绍寥寥无几,这个文档是本人花费若干时间总结和分析得出的结论,基本的算法过程大致讲解清楚了,从中可以学习到很多有价值的经验,对程序语言设计、编译器构造、形式语言和自动机理论以及机器学习等都有帮助和参考价值
1
该词法分析器能实现对自己输入的类C语言源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。需解压后打开Microsoft Visual Studio运行,或者直接打开词法分析\词法分析\Debug文件夹里面的.exe文件直接运行。
2021-04-06 09:25:09 4.54MB 编译原理  词法分析 c语言 c#
1
自己编写的SNL词法分析程序,用于课程设计,代码量不少,运用了编译原理的重要原理。
2021-04-05 20:46:15 439KB SNL 词法分析 C++
1