刚看完词法分析器这章,可还不明白输入与输出结果的具体形式

fertiland 2003-04-18 10:40:08
今天做了一个程序,打开三个文件,分别为输入,输出,关键字文件,
当然,还应该有常量表,标识符表等,但我不清楚有什么用,不知怎么用。
"input.txt"
void main(void)
{
if a11==11b
printf();
bye missing you!
}
"keyword.txt"
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while
"output.txt"
void 4(保留字,-)
main 4(标识符,-)
((右括号运算符,-)
void 4(保留字,-)
)(左括号运算符,-)
{(边界运算符,-)
if 2(保留字,-)
a11 3(标识符,-)
==(等于比较符,-)
11 2(常量,-)
b 1(标识符,-)
printf 6(标识符,-)
((右括号运算符,-)
)(左括号运算符,-)
;(逗号界符,-)
bye 3(标识符,-)
missing 7(标识符,-)
you 3(标识符,-)
! (error,-)
}(边界运算符,-)


以上输出结果,11b是错误,现还没分析出来,我自己认为这其中有些地方,比如表达式方面与语法分析有些不清,请大虾指点。
...全文
253 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoukun666 2003-04-27
  • 打赏
  • 举报
回复
源代码任何一本编译原理树上都有呀!
fertiland 2003-04-27
  • 打赏
  • 举报
回复
当然,我做的是词法分析器。
谁有相关的源程序,借鉴一下。
fertiland 2003-04-26
  • 打赏
  • 举报
回复
我的问题就是:像上面的结果就是记法分析的结果吗?
omrhal 2003-04-26
  • 打赏
  • 举报
回复
你做的是词法分析,不是语法分析。语法分析有好多种方法,调用子程序,ll0,lr0什么的,编译原理上都有的啊。
fertiland 2003-04-26
  • 打赏
  • 举报
回复
先解决问题好吗?再者不见我只有一颗星吗?有心无力
fertiland 2003-04-24
  • 打赏
  • 举报
回复
input.txt
main()
{
int i,j;
float k;

i=10;
j=i+10;
k=90.8;
if k>10
j=10;
else
i=0;
printf("%s");

}

/**********************************************************/
output.txt
位置 符号类型 识别符 ) 长度
1 (标识符 ,main ) 4
2 (右括号运算符 ,( ) 1
3 (左括号运算符 ,) ) 1
4 (边界运算符 ,{ ) 1
5 (保留字 ,int ) 3
6 (标识符 ,i ) 1
7 (逗号界符 ,, ) 1
8 (标识符 ,j ) 1
9 (分号界符 ,; ) 1
10 (保留字 ,float ) 5
11 (标识符 ,k ) 1
12 (分号界符 ,; ) 1
13 (标识符 ,i ) 1
14 (赋值运算符 ,= ) 1
15 (常数 ,10 ) 2
16 (分号界符 ,; ) 1
17 (标识符 ,j ) 1
18 (赋值运算符 ,= ) 1
19 (标识符 ,i ) 1
20 (加运算符 ,+ ) 1
21 (常数 ,10 ) 2
22 (分号界符 ,; ) 1
23 (标识符 ,k ) 1
24 (赋值运算符 ,= ) 1
25 (实数 ,90.8 ) 4
26 (分号界符 ,; ) 1
27 (保留字 ,if ) 2
28 (标识符 ,k ) 1
29 (大于比较符 ,> ) 1
30 (常数 ,10 ) 2
31 (标识符 ,j ) 1
32 (赋值运算符 ,= ) 1
33 (常数 ,10 ) 2
34 (分号界符 ,; ) 1
35 (保留字 ,else ) 4
36 (标识符 ,i ) 1
37 (赋值运算符 ,= ) 1
38 (常数 ,0 ) 1
39 (分号界符 ,; ) 1
40 (标识符 ,printf ) 6
41 (右括号运算符 ,( ) 1
42 (字符串 , "%s") 4
43 (左括号运算符 ,) ) 1
44 (分号界符 ,; ) 1
45 (边界运算符 ,} ) 1
怎么没人关心这个呀??????
大虾赐教吧
omrhal 2003-04-24
  • 打赏
  • 举报
回复
你想问什么?

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧