• 大小: 2.42MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-08
  • 语言: 其他
  • 标签:

资源简介

含有lex生成词法分析,手工构造词法分析,手工构造语法分析!含源码和报告

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 

#ifndef FALSE
#define FALSE 0
#endif

#ifndef TRUE
#define TRUE 1
#endif 


FILE * source;
FILE * listing;


#define MAXRESERVED 6
#define MAXTOKENLEN 40
#define BUFLEN 256



char lineBuf[BUFLEN];
char tokenstring[MAXTOKENLEN+1];
int lineno=0;
int linepos = 0;
int bufsize = 0;
int EOF_Flag = FALSE;
int EchoSource = TRUE;
int TraceScan = TRUE;



typedef enum
{   
ENDFILEERROR
    /*reserved words*/
ELSEIFINTRETURNVOIDWHILE
/*token*/
IDNUM
/*special symbols*/
ASSIGNEQLTGTGEPLUSMINUSTIMESOVERLPARENRPARENSEMILENECOMMALBRACERBRACELBRACKETRBRACKET
}TokenType;

typedef enum
{
STARTINEQINLEINNEINGEINCOMMENTINNUMINIDDONEINOVERIN_COMMENT
}StateType;

static struct
{
char* str;
TokenType tok;
}reservedWords[MAXRESERVED]
={{“if“IF}{“else“ELSE}{“int“INT}{“return“RETURN}{“void“VOID}{“while“WHILE}};



void printToken(TokenType tokenchar * tokenstring)

switch (token)
{  
   case IF:
       case ELSE:
       case INT:
       case VOID:
       case WHILE:
   case RETURN:
    fprintf(listing“reserved word: %s\n“tokenstring);
break;
      case ASSIGN:fprintf(listing“ASSIGN:%s\n“tokenstring);
  break;
  case LT: fprintf(listing“LT:%s\n“tokenstring);
  break;
  case LE: fprintf(listing“LE:%s\n“tokenstring);
  break;
  case NE: fprintf(listing“NE:%s\n“tokenstring);
  break;
  case EQ: fprintf(listing“EQ:%s\n“tokenstring);
  break;
   case PLUS: fprintf(listing“PLUS:%s\n“tokenstring);
  break;
   case MINUS: fprintf(listing“MINUS:%s\n“tokenstring);
  break;
   case TIMES: fprintf(listing“TIMES:%s\n“tokenstring);
  break;
   case OVER: fprintf(listing“OVER:%s\n“tokenstring);
  break;
   case LPAREN: fprintf(listing“LPAREN: %s\n“tokenstring);
  break;
   case RPAREN: fprintf(listing“RPAREN:%s\n“tokenstring);
  break;
   case GT: fprintf(listing“GT:%s\n“tokenstring);
  break;
   case GE: fprintf(listing“GE:%s\n“tokenstring);
  break;
   case COMMA: fprintf(listing“COMMA:%s\n“tokenstring);
  break;
   case LBRACE: fprintf(listing“LBRACE:%s\n“tokenstring);
  break;
   case RBRACE: fprintf(listing“RBRACE:%s\n“tokenstring);
  break;
   case LBRACKET: fprintf(listing“LBRACKET:%s\n“tokenstring);
  break;
   case RBRACKET: fprintf(listing“RBRACKET:%s\n“tokenstring);
  break;
   case SEMI: fprintf(listing“SEMI:%s\n“tokenstring);
  break;
   case ENDFILE: fprintf(listing“EOF\n“);
  break;
   case NUM:
   fprintf(listing“NUMval=%s\n“tokenstring);
   break;
    case ID:
   fprintf(listing“IDname=%s\n“tokenstring);
   break;
 case ERROR:
   fprintf(listing“ERROR:%s\n“tokenstring);
   break;
 default:
  fprintf(listing“Unknown token:%d\n“token);
}
}



static int getNextChar(void)
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     236352  2012-05-15 14:41  pro\com.rar

     文件     213033  2012-05-21 22:56  pro\lex\Debug\lex.exe

     文件     238464  2012-05-21 22:56  pro\lex\Debug\lex.ilk

     文件     157508  2012-05-21 22:56  pro\lex\Debug\lex.pch

     文件     484352  2012-05-21 22:56  pro\lex\Debug\lex.pdb

     文件      19528  2012-05-21 22:56  pro\lex\Debug\mylexer.obj

     文件      33792  2012-05-30 00:08  pro\lex\Debug\vc60.idb

     文件      45056  2012-05-21 22:56  pro\lex\Debug\vc60.pdb

     文件        109  2012-05-08 16:07  pro\lex\in.txt

     文件       4491  2012-05-21 22:57  pro\lex\lex.dsp

     文件        512  2012-05-21 22:57  pro\lex\lex.dsw

     文件      41984  2012-05-30 00:14  pro\lex\lex.ncb

     文件      48640  2012-05-30 00:14  pro\lex\lex.opt

     文件        240  2012-05-30 00:08  pro\lex\lex.plg

     文件      82124  2012-06-01 00:01  pro\lex_词法分析.docx

     文件     304346  2012-06-01 00:01  pro\lex_词法分析.pdf

     文件      22623  2012-05-11 13:45  pro\lyl\Debug\first.obj

     文件     196650  2012-05-11 13:45  pro\lyl\Debug\lyl.exe

     文件     222752  2012-05-11 13:45  pro\lyl\Debug\lyl.ilk

     文件     239328  2012-05-11 13:45  pro\lyl\Debug\lyl.pch

     文件     525312  2012-05-11 13:45  pro\lyl\Debug\lyl.pdb

     文件      33792  2012-05-29 23:08  pro\lyl\Debug\vc60.idb

     文件      53248  2012-05-11 13:45  pro\lyl\Debug\vc60.pdb

     文件       7542  2012-05-11 12:52  pro\lyl\first.cpp

     文件        109  2012-05-08 16:07  pro\lyl\in.txt

     文件       4250  2012-04-23 21:11  pro\lyl\lyl.dsp

     文件        514  2012-04-23 21:09  pro\lyl\lyl.dsw

     文件      41984  2012-05-29 23:31  pro\lyl\lyl.ncb

     文件      48640  2012-05-29 23:31  pro\lyl\lyl.opt

     文件        240  2012-05-29 23:08  pro\lyl\lyl.plg

............此处省略41个文件信息

评论

共有 条评论

相关资源