资源简介
简易词法分析程序,用于学生学习时分析使用。可以更了解计算机底层工作。
代码片段和文件信息
#include
#include
#include
#define _KEY_WORD_END “waiting for your expanding“
typedef struct
{
int typenum;
char * word;
} WORD;
char input[255];
char token[255]=““;
int p_input;
int p_token;
char ch;
char* KEY_WORDS[]={“main““int““char““if““else““for““while“_KEY_WORD_END};
WORD* scaner();
void main()
{
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<1000&&over!=-1){
oneword=scaner();
if(oneword->typenum<1000)
printf(“(%d%s)“oneword->typenumoneword->word);
over=oneword->typenum;
}
printf(“\npress # to exit:“);
scanf(“%[^#]s“input);
}
char m_getch(){
ch=input[p_input];
p_input=p_input+1;
return (ch);
}
void getbc(){
while(ch==‘ ‘||ch==10){
ch=input[p_input];
p_input=p_input+1;
}
}
void concat(){
token[p_token]=ch;
p_token=p_token+1;
token[p_token]=‘\0‘;
}
int letter(){
if(ch>=‘a‘&&ch<=‘z‘||ch>=‘A‘&&ch<=‘Z‘)return 1;
else return 0;
}
int digit(){
if(ch>=‘0‘&&ch<=‘9‘)return 1;
else return 0;
}
int reserve(){
int i=0;
while(strcmp(KEY_WORDS[i]_KEY_WORD_END)){
if(!strcmp(KEY_WORDS[i]token)){
return i+1;
}
i=i+1;
}
return 10;
}
void retract(){
p_input=p_input-1;
}
char* dtb(){
return NULL;
}
WORD* scaner(){
WORD* myword=new WORD;
myword->typenum=10;
myword->word=““;
p_token=0;
m_getch();
getbc();
if(letter()){
while(letter()||digit()){
concat();
m_getch();
}
retract();
myword->typenum=reserve();
myword->word=token;
return(myword);
}
else if(digit()){
while(digit()){
concat();
m_getch();
}
retract();
myword->typenum=20;
myword->word=token;
return(myword);
}
else switch(ch){
case ‘=‘: m_getch();
if (ch==‘=‘){
myword->typenum=39;
myword->word=“==“;
return(myword);
}
retract();
myword->typenum=21;
myword->word=“=“;
return(myword);
bre
- 上一篇:webwatch官方版
- 下一篇:清华大学-高等数值分析-插值实验报告
相关资源
- AresonMouseTestProgram可测鼠标回报率及
- Game Programming Patterns.pdf
- Online pricing with bundle discounts and coupo
- IT6802 Programming Guide
-
高清彩版 Programming in ob
jective-C(6 - 编程大师访谈录Programmers At Work
- Stylus4xProgram_Ver32(ME1)清零软件
- Introduction to Stochastic Dynamic Programming
- iOS Programming The Big Nerd Ranch Guide 第6版
- Parallel Programming with Microsoft.NET.pdf
- PC Logo for Windows - v1.01a
- Programming_in_Lua_4th_ed._(2017)_.pdf
- UPnP测试程序
- 1_Programming Guide for ZPLII ZBI SGD Mirror W
- 《Xilinx ZYNQ-7000 AP SoC开发实战指南》符
- AppCode,新书推荐,Beginning iOS 11 Prog
- Applied Mathematical Programming
- TheCProgrammingLanguage中文第2版高清版.
- T1program.zip
- 《Programming in Lua》中文版
- Robot Programming A Guide to Controlling Auton
- 微信考勤小程序miniprogram-master.zip
- 高清彩版 Concepts of Programming Languages
- Lua Programming Gems 英文版 pdf,高清
- ACOUSTICS_1_General_Program_Organization.pdf
- From Mathematics to Generic Programming 数学与
- Lua Programming Gems 高清书签
- Benjamin C Pierce Types and Programming Langu
- Computer Systems_A Programmer’s Perspective
- Practical Game AI Programming
评论
共有 条评论