社区
C语言
帖子详情
语法分析器的设计与实现程序(c语言) 词法分析器的设计与实现程序(c语言)
qyw7
2002-06-07 04:09:24
赶快
...全文
696
4
打赏
收藏
语法分析器的设计与实现程序(c语言) 词法分析器的设计与实现程序(c语言)
赶快
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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语言
语法分析器
)丁光耀.doc...
本文介绍了一个
C语言
词法分析器
和
语法分析器
的
设计
与
实现
过程,包括
词法分析器
对源
程序
的处理流程、LL(1)语法分析方法的应用,以及具体的
程序
设计
思路和技术细节。
C语言
图子系统,基于
C语言
子系统的
词法分析器
计和
实现
.doc
本文简述了一种基于
C语言
的
词法分析器
的
设计
与
实现
,通过C++工具Visual Studio,聚焦编译器的基础构造。着重介绍了词法分析的过程,包括规则识别、记号处理,并概述了整个编译器开发的四个关键部分:
词法分析器
、语法分析、语义分析和用户界面。
设计
仅包含代表性功能,展示了
C语言
程序
的编译原理和面向对象
设计
方法的应用。
编译原理课程
设计
-
c语言
词法分析器
(java版),编译原理课程
设计
-
C语言
词法分析器
语法分析器
精选.doc...
本文详细介绍了如何使用
C语言
实现
词法分析器
,涵盖了实验目的、要求、环境设置,以及理论构架。通过实际操作演示了
程序
入口
设计
、流程控制和输出
设计
。接着转向
语法分析器
,探讨了LL(1)方法,提供源代码实例和结果分析。此外,作者分享了学习与体会。
编译原理----第二章:词法分析
本文详细介绍了
词法分析器
的
设计
方法,包括独立的
词法分析器
与作为
语法分析器
子
程序
的
词法分析器
,以及单词符号的分类与输出形式。重点讨论了状态转换图的概念、表示及编程
实现
。此外,还阐述了一个简单的
C语言
子集
词法分析器
的状态转换图。正规表达式与有限自动机的关系被深入探讨,包括正规式的运算性质和有限自动机(确定与非确定)的概念。
词法分析完整代码
本文介绍了一个
词法分析器
的
设计
与
实现
过程,该分析器能够处理
C语言
风格的源代码,提取并分类诸如关键字、标识符、整数、浮点数、运算符等基本元素。通过对输入字符流进行解析,系统能有效识别出
程序
中的各种语法单位。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章