首页 > 学院 > 开发设计 > 正文

词法分析程序

2019-11-17 05:46:15
字体:
来源:转载
供稿:网友
这个是我编译原理课程设计的 内容,呵呵 我遍的是词法分析,基本的功能都能够实现,如词法分析,词法查错,删除无实质意义的字符等,不懂编译的就不用看了,编译真的很难!!!不过好象没什么用#include<iostream.h>
#include<ctype.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>#define ID 6   
#define INT 7
#define LT 8
#define LE 9
#define EQ 10
#define NE 11
#define GT 12
#define GE 13
#define FZ 14       
#define DEV 15 strUCt KeyWord        //要害字结构
{
 char *word;
 int id;
};KeyWord keyword[]={    //要害字数组
 ,
 ,
 ,
 ,
 ,
 ,
 ,
 
};
char TOKEN[20];
int graphnum=1;     //记录错误所在的位置
int lookup(char *string);
void out(int id ,char *string);
void report_error(char ERR_CH);
bool isalpha(char c) ;
bool isdigit(char c);
bool isalnum(char c);
void scanner_example(FILE *fp); int lookup(char *string)
{
 for(int i=0;i<sizeof(keyword)/sizeof(KeyWord);i++)
 {
  if(strcmp(string,keyword[i].word)==0)
   return keyword[i].id;
 }
 return 0;
}void out(int id ,char *string)
{
 PRintf("(%d,%s) ",id,string);;
}void report_error(char ERR_CH)        //错误处理程序
{
 printf("undeclared identifler %c int %d line! ",ERR_CH,graphnum);
}bool isalpha(char c)  
{
 if( (c>='a'&&c<='z') (c>='A'&&c<='Z') )
  return true;
 else
  return false;
}bool isdigit(char c)
{
 if(c>='0'&&c<='9')
  return true;
 else
  return false;
}bool isalnum(char c)
{
 if( isalpha(c) isdigit(c) )
  return true;
 else
  return false;
}void scanner_example(FILE *fp)
{
 char ch;
 int i,c;
 
 while(!feof(fp))
 { ch=fgetc(fp);
 if(isalpha(ch)) 
 {
  TOKEN[0]=ch;
  ch=fgetc(fp);
  i=1;
  while(isalnum(ch)) 
  
  TOKEN[i]='

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表