社区
C语言
帖子详情
语法分析器的设计与实现程序(c语言) 词法分析器的设计与实现程序(c语言)
qyw7
2002-06-07 04:09:24
赶快
...全文
669
4
打赏
收藏
语法分析器的设计与实现程序(c语言) 词法分析器的设计与实现程序(c语言)
赶快
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
joekol
2002-06-10
打赏
举报
回复
D [0-9]
L [a-zA-Z]
H [a-f A-F 0-9]
E [Ee][+-]?{D}+
FS (f|F|l|L)
IS (u|U|l|L)*
%{
#include<stdio.h>
#include"y.tab.h"
void count();
%}
%%
"/*" {comment();}
"auto" {count(); return(AUTO);}
"break" {count(); return(BREAK);}
"case" {count(); return(CASE);}
"char" {count(); return(CHAR);}
"const" {count(); return(CONST);}
"continue" {count(); return(CONTINUE);}
"default" {count(); return(DEFAULT);}
"do" {count(); return(DO);}
"double" {count(); return(DOUBLE);}
"else" {count(); return(ELSE);}
"enum" {count(); return(ENUM);}
"extern" {count(); return(EXTERN);}
"float" {count(); return(FLOAT);}
"for" {count(); return(FOR);}
"goto" {count(); return(GOTO);}
"if" {count(); return(IF);}
"int" {count(); return(INT);}
"long" {count(); return(LONG);}
"reister" {count(); return(REISTER);}
"return" {count(); return(RETURN);}
"short" {count(); return(SHORT);}
"signed" {count(); return(SIGNED);}
"sizerof" {count(); return(SIZEROF);}
"static" {count(); return(STATIC);}
"struct" {count(); return(STRUCT);}
"switch" {count(); return(SWITCH);}
"typedef" {count(); return(TYPEDEF);}
"union" {count(); return(UNION);}
"unsigned" {count(); return(UNSIGNED);}
"void" {count(); return(VOID);}
"volatile" {count();return(VOLATILE);}
"write"{ count();return(write)}
""{l}({L}|{D})*{count();return(check type(1);}
0[xX]{H}{IS}?{count();return(CONSTANT);}
0{D}+{IS}?{count();return(CONSTANT);}
{D}+{IS}? {count();return(CONSTANT);}
L?'(\\.|[^\\']+' {count();return(CONSTANT);}
{D}+{E}{FS}? {count();return(CONSTANT);}
{D]*"."{D}+({E})?{FS}?{count();return(CONSTANT);}
{D]*"."{D}*({E})?{FS}?{count();return(CONSTANT);}
L?'(\\.|[^\\']*' {count();return(STRING-LITERAL);}
"..."{count();return(LLIPSIS);}
">>=" {count();return(RIGHT-ASSIGN);}
"<<="{count();return(LEFT-ASSIGN);}
"+="{count();return(ADD-ASSIGN);}
"-="{count();return(SUB-ASSIGN);}
"*="{count();return(MUL-ASSIGN);}
"/="{count();return(DIV-ASSIGN);}
"%="{count();return(MOD-ASSIGN);}
"&="{count();return(AND-ASSIGN);}
"^="{count();return(XOR-ASSIGN);}
"|="{count();return(OR-ASSIGN);}
">>"{count();return(RIGHT-OP);}
"<<"{count();return(LEFT-OP);}
"++"{count();return(INC-OP);}
"--"{count();return(DEC-OP);}
"->"{count();return(PIR-OP);}
"&&"{count();return(AND-OP);}
"||"{count();return(OR-OP);}
"<="{count();return(LE-OP);}
">="{count();return(GE-OP);}
"=="{count();return(EQ-OP);}
"!="{count();return(NE-OP);}
";"{count();return(';');}
("{"|"<%"){count();return('{');}
("}"|"%>"){count();return('}');}
" "{count();return(' ');}
":"{count();return(':');}
"="{count();return('=');}
"("{count();return('(');}
")"{count();return(')');}
("["|"<%"){count();return('[');}
("]"|"%>"){count();return(']');}
"."{count();return('.');}
"&"{count();return('&');}
"!"{count();return('!');}
"~"{count();return('~');}
"-"{count();return('-');}
"+"{count();return('+');}
"*"{count();return('*');}
"/"{count();return('/');}
"%"{count();return('%');}
"<"{count();return('<');}
">"{count();return('>');}
"^"{count();return('^');}
"|"{count();return('|');}
"?"{count();return('?');}
[\t\v\n\f]{count();}
. {/*ignore bad characters*/}
yywrap()
{return(|);}
comment()
{
char( c1)
loop:
while ((c=input()) !='*' && c!=0)
putchar(c);
if ((c1=input())!='/' && (!=0)
{
unput(c1);
goto loop;
}
if (c!=0)
putchar(c1);
}
int column=0;
void count()
{
int;
for (i=0;yytext[i]!='\0';i++)
if(yytext[i]=='\n')
column=0;
else if(yytext[i]=='\t')
column+=8-(column%8);
else
column++;
ECHO;
}
int check_type()
{
return(IPENTIFIER);}
ritch
2002-06-07
打赏
举报
回复
建议:我用C++做过,C差不多,词法分析就是找关键字,而语法分析我则是用最简单的递归下降法,你去找有关编译原理的书。
ritch
2002-06-07
打赏
举报
回复
建议:我用C++做过,C差不多,词法分析就是找关键字,而语法分析我则是用最简单的递归下降法,你去找有关编译原理的书。
cycker
2002-06-07
打赏
举报
回复
你去找本书《C语言编程实践及实例荟萃》
编译原理
词法分析器
源
程序
C语言
实现
编译原理
词法分析器
源
程序
C语言
实现
本资源是一个使用
C语言
实现
的编译原理
词法分析器
源
程序
,主要功能是对输入的源
程序
进行词法分析,识别出关键字、标识符、数字等 token,并将其输出。 1. 编译原理 编译原理是...
C语言
词法分析器
和
C语言
语法分析器
编译原理课程
设计
报告书.doc
知识点1:
C语言
词法分析器
的
设计
与
实现
* 熟悉
C语言
词法:了解
C语言
的保留字、符号、标识符和关键字的定义和使用。 * 掌握构造DFA的过程:掌握Deterministic Finite Automaton(确定性有限自动机)的
设计
和
实现
,...
词法分析
程序
语法分析
程序
C语言
在学习编译原理时,编写
词法分析器
和
语法分析器
是实践性很强的一部分。这有助于学生理解如何将源代码转换为机器可执行的形式,从而深化对编程语言内部工作原理的理解。参考代码(词法分析+语法分析)可能包含
实现
这两...
C语言
词法分析器
通过
设计
和
实现
C语言
词法分析器
,我们不仅可以掌握词法分析的基本概念和技术,还能提升编程技能和问题解决能力。这个过程涉及到了字符串处理、字符流分析、数据结构
设计
等多个编程基础,对于理解和编写更复杂的...
编译原理实验一——C 语言
词法分析器
设计
与
实现
本实验“
C语言
词法分析器
设计
与
实现
”旨在深入理解词法分析原理,并掌握如何构建一个能正确处理源
程序
中单词的
程序
。 在编译原理中,
词法分析器
(也称为扫描器)是第一个处理源代码的组件。它的主要任务是: 1. **...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章