编译原理词法分析程序设计实验报告.docxVIP

编译原理词法分析程序设计实验报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理词法分析程序设计实验报 告 【实验目得】 1.了解词法分析得主要任务。 2. 熟悉编译程序得编制。 【实验内容】 根据某文法 , 构造一基本词法分析程序。找出该语言得关键字、标识符、整数以及其她一些特殊符号,给出单词得种类与值 . 【实验要求】 构造一个小语言得文法 类 C 小语言文法 ( 以 EB N F 表示) ? ?〈程序>:: =〈分程序> {<分程序 } 、 <分程序> : := 标识符> ( <’变量说明部分〉 {,〈变量说明部分〉 }) 〈’函数体〉 ?〈变量说明部分〉 : : =in t〈标识符 {,<标识符>} ? 函数体>:: =’{’[ 变量说明部分 ;] 语句序列〉 ’} ’ 语句序列〉 :: =<语句序列 ;〈语句〉|〈语句〉 ?〈语句>: : = 赋值语句 |〈条件语句 | 循环 语句〉|<函数调用语句 ?<赋值语句 : := <标识符〉 =〈表达式 <表达式>:: =[+| -]<项>{〈加法运算符><项 } ?<项〉 : :=<因子〉 {〈乘法运算符 〈因 子〉 } <因子 := 标识符〉| 无符号整数〉 加法运算符>: : = +|- 乘法运算符>: : = *|/ ?<条件语句 :: =if 条件 ’{ ’语句序列 ’ } ’ [else{’语句序列 ’]} 条件〉:: = 表达式 〈关系运算符 表达式〉 ? 关系运算符 :: = == |!= |>| |=|= 〈循环语句> : : =for ’(’〈表达式 ; 条件 ;〈表达式 ) ’’<{’语句序列〉 ’} ’ 〈函数调用语句〉 :: = 标识符> ’〈(’标识符 { ,<标识符 } |<空 ’) ? 标识符 :: = <字母>{<字 母〉 |数字>} <无符号整数 :: =〈数字〉 { 〈数字 } ?〈字母 : :=a |b |c| ?| X|Y| Z <数字> :: =0|1| 2| ?|8 |9 单词分类情况 关键字 : int if els e for 标识符:以字母开头得字母与数字得组合 关系运算符: = =|! = |〉 |〈|>=|〈 = 加法运算符: +|- ?乘法运算符 : *| /界符 :,; { } ( ) 设计单词得输出形式,单词得种类与值得表示方法 种别码 单词值 如: 1 i nt 3、 编写词法分析程序 cffx 、c 实现基本得词法分析器 , 能够分析关键字、标识符、数字、运算符(需要有“ ==”或“:= 之类需要超前搜索得运算符)以及其她一些符号 . 编译原理词法分析程序、 cpp include 〈 stdio、 h #include<s tdli b、 h> incl ud e〈st ring 、h 〉 t y pedef st ruct wor d s { ?int id; ?ch ar n ame[20] ; ha r value [20] ; word ; h ar intege r [20] ={i', n ' , ’}t’; char iff[ 20 ]={' i ’’f',}; char elsee[20 ] ={ ’ e'’,', ’ls,’ e;’} har for r[ 20]= { ’f',o ’,'r }; int main () { ?char cod e[1 0000]; ?char word s[ 20], ch; nt i, j,p, count,n , m; ?in t k=0; ?wor d s ymbo l[500 ]; pri ntf( 种别码: 1 类别:关键字 int\n "); prin tf ( 种别码: 2 类别 : 关键字 if\ n”); p ri nt f(”种别码 :3 类别 :关键字 else \n ” ); printf (”种别码:4 类别:关键字 for\ n"); rintf( 种别码 :5 类别:标识符 \n ” ); printf (”种别码: 6 类别 :计算运算符 n ) ; p rint f (”种别码:7 类别 :关系运算符\ n”); printf( 种别码: 8 类别 :界符 \n); ?while ( 1) ?{ ?gets( code ); n=st r le n( cod e); for( m=0,j =0;m< n; m+ +) ??{ if (( code[m ]〉= ’ a&co de[ m] =' z)|| ( code[m ]> =’0 & cod e[ m] <=’9)’) { words[j ] =co de[m] ; j++; } else { ? i f(w ords[0]== ’&i&w ords[1

文档评论(0)

zsmfjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档