编译原理实验1(Compiler theory experiment 1).doc

编译原理实验1(Compiler theory experiment 1).doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验1(Compiler theory experiment 1)

编译原理实验1(Compiler theory experiment 1) # includes stdio.h # includes stdlib.h # includes string.h # define _ key _ word _ end waiting for your expanding typedef struct {int typenum; char * wrod; } word; char input [255]. char token [255] = ; int p _ inputs; int p _ token. char ch; char * rwtab [] = {begin, if, then, white, do, _ key _ word _ end}; word * scaner (); void mian () { int over = 1; word * oneword = new word; printf (enter your words (end with #):); scanf (% [^ #] s input). p _ input = 0; printf (your words: \ n% s \ n, input). while (over = 100 over. = - 1) { oneword = scaner (); if (oneword - typenum 1000) printf ((% d% d), oneword - typenum, oneword - word); over = oneword - typenum; } printf (\ npress # to exit:); scanf (% [^ #] s input). } char m _ getch () { ch = input (p _ input); p = p _ _ input input + 1; return (ch). } void getbc () { while ((ch = = | | ch = = 10) { ch = input (p _ input); p = p _ _ input input + 1; } } void concat () { token [p] = ch _ input; p _ token = p _ token + 1; token [p _ token] = \ 0. } 国际letter() { 如果(CH = a和CH = Z | | CH = a和CH = Z) 返回1; 其他的 返回0; } 国际digit() { 如果(CH = 0和CH = 9) 返回1; 其他的 返回0; } 国际reserve() { int = i 0; 而(strcmp(rwtab [我],_key_word_end)) { 如果(!strcmp(rwtab [我],令牌)) { 返回i + 1; } i = i + 1; } 返回10; } 无效retract() { p_input = p_input + 1; } char * dtb() { 返回null; } 下面为扫描部分/ * * / 词* scaner() { 词*保证=新单词; 保证- typenum = 10; 保证-词=”; p_token = 0; m_getch(); getbc; 如果(letter()) { 而(letter() | | digit()) { concat(); m_getch(); } retract(); 保证- typenum = reserve(); 保证-词=令牌; 返回(保证); } 如果(digit()) { 而(digit()) { concat(); m_getch(); } retract(); 保证- typenum = 20; 保证-词=令牌; } 其他开关 { “=”:m_getch; 如果(= =“=”) { 保证- typenum = 39; 保证-字=“= =”; 返回(保证); } retract(); 保证- typenum = 21; 保证-字=“=”; 返回(保证); 打破; “+”:保证- typenum = 22; 保证-词=“+”; 返回(保证); 打破; “-”:保证- typenum = 23; 保证-词=“-”; 返回(保证); 打破; “*”:保证- typenum = 24; 保证-词=“*”; 返回(保证); 打破; “/”:保证- typenum = 25; 保证-词=“/”; 返回(保证); 打破; “(”:保证- typenum = 26; 保证-词= (;

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档