| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 665 人关注过本帖, 1 人收藏
标题:谁能帮我看看这道题咋做啊--分离出来的字符串怎么处理啊
只看楼主 加入收藏
tmn1990
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-9-13
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:1 
谁能帮我看看这道题咋做啊--分离出来的字符串怎么处理啊
    考察点:
    所建各表中符号编码是否唯一(不能出现同一符号有两个编码)。
    特殊运算符:++、――、+=等的处理,小数的处理;能否分析出带有下划线的标识符。
    注释://引导的行注释,/**/引导的段落注释。
    代码效率:短代码可输入书上的例题或作业中的程序,长代码则输入自己编写的词法分析程序,看是否能够输出正确的结果及得到结果所用时间。
    分析结果以文件形式保存,同时要求输出到屏幕。
    课程设计报告要点:
一、成员分工
1.    设计小组成员姓名、学号
2.    主要职责
3.    每个成员所完成工作占全组工作的百分比

二、程序结构
1.    主函数主要功能
2.    各子函数主要功能
3.    函数之间的调用关系

三、设计思想
1.    总体思路
2.    各模块设计思想
3.    特色设计

四、关键代码(适当加注释)
1.    体现主要设计思想的代码
2.    体现特色设计的代码

五、程序测试
1.    测试计划(包括测试目的、测试数据)
2.    测试结果(包括测试过程中出现的问题)
3.    测试结果分析(包括解决问题的方案)
4.    测试结论












高级语言课程设计


【目的】全面深入理解高级语言程序设计知识,掌握应用技巧,提高分析与应用能力。
【题目】编制并调试C词法分析程序。
【要求】
(1).    从磁盘上读入一个C源程序,将其翻译成一个由内部码表示的C程序。
(2).    把C单词分成如下几类:
    保留字(例如:for、if、int、struct等)
    分隔符 (例如:(、 # 、 .、\ 、 ;等)
    运算符 (例如:+ 、- 、* 、\ 、< 、> 等)
    标识符(例如:color、main、i、f等)
    常量,包括整数类型常量、浮点类型常量、字符类型常量、字符串类型常量。
(3).    对不同类单词可编码如下:
保留字:    0    编号

分隔符:    1    编号

运算符:    2    编号
      
标识符:    3    标识符名表地址

整数类型常量:    4    0    整数类型常量表地址

浮点类型常量:    4    1    浮点类型常量表地址

字符类型常量:    4    2    字符类型常量表地址

字符串类型常量:    4    3    字符串类型常量表地址
    保留字、分隔符、运算符编号可以由读者自己决定。但对处理的所有C源程序来讲每个符号的编号应该一致。
    在处理源程序过程中应该造一个标识符名表,保存本源程序中出现的所有标识符。标识符单词中的标识符名表地址就是相应标识符在该表中的地址。
    在处理源程序过程中应该分别造整数类型常量表、浮点类型常量表、字符类型常量表、字符串类型常量表,保存本源程序中出现的所有常量。常量单词中的常量表地址就是相应常量在相应常量表中的地址。
    能对宏定义、文件括入进行编译预处理。宏定义的字符串全部被替换;括入文件中的内容与源程序文件中内容同样处理。
(4).    定义C的所有保留字、分隔符、运算符编码,造出编码表,编出C语言单词翻译程序。该程序输入一个C语言源程序;根据输入的C语言源程序造出标识符表、各种常量表;把输入的C语言源程序翻译成与其等价的内部码程序。
(5).    用数组、链表等数据结构组织各种表格,最后输出经过翻译的与源程序等价的内部码程序和所有表格,而且要对C单词进行词法检查。
(6).    所谓内部码程序就是一个单词编码序列,其中每个单词编码对应源程序中的一个单词。例如有如下源程序:
#include <stdio.h>
void main() {
union un {
int a;
char c[2];
}w;
w.c[0]=’A’; w.c[1]=’a’;
printf(“%o\n”,w.a);
}
翻译后得到的内部码程序如下边左列所示。为了对照将相应源程序单词附在右边,但它们不属于内部码程序:
 

Stdio.h 文件中的程序代码部分
    #include <stdio.h>
   0    35    void
   3    1    main
   1    2    (
   1    3    )
   1    11    {
   0    33    union
   3    2    un
   1    11    {
   0    22    int
   3    3    a
   1    8    ;
   0    5    char
   3    4    c
   1    4    [
   4    0    1    2
   1    5    ]
   1    8    ;
   1    12    }
   3    5    w
   1    8    ;
   3    5    w
   2    11    .
   3    4    c
   1    4    [
   4    0    2    0
   1    5    ]
   2    8    =
   4    2    1    ‘A’
   1    8    ;
   3    5    w
   2    11    .
   3    4    c
   1    4    [
   4    0    3    1
   1    5    ]
   2    8    =
   4    2    2    ‘a’
   1    8    ;
   3    6    printf
   1    2    (
   4    3    1    “%0\n”
   1    6    ,
 3    5    w
   2    11    .
   3    3    a
   1    3    )
   1    8    ;
   1    12    }
 

分别假设:






 
    本程序涉及的保留字编码如下:
保留字    编码
include     21
 void    35
 union      33
 int    22
 char    5
    本程序涉及的分隔符编码如下:
分隔符    编码
#    1
(    2
)    3
{    11
}    12
[    4
]    5
,    6
;    8
    本程序涉及的运算符编码如下:
运算符    编码
  .        11
 =        8
    本程序涉及的标识符表如下:
标识符    地址
main    1
un    2
a    3
c    4
w    5
printf    6
    由程序造的整数类型常量表如下:
整数类型常量    地址
2    1
0    2
1    3

    由程序造的浮点类型常量表如下:
        
    由程序造的字符类型常量表如下:
字符类型常量    地址
  ‘A’      1
  ‘a’      2

搜索更多相关主题的帖子: 字符 
2010-09-13 00:44
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:20 
比较麻烦........

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-09-13 01:03
快速回复:谁能帮我看看这道题咋做啊--分离出来的字符串怎么处理啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016966 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved