亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? crp.c

?? 自己寫的關(guān)于編譯原理的實(shí)驗(yàn)報(bào)告的源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**********************************************************
**   PARSER_C.FRM
**   Coco/R C Support Frames.
**   Author: Frankie Arzu <farzu@uvg.edu.gt>
**
**   Jun 12, 1996   Version 1.06
**      Many fixes and suggestions thanks to
**      Pat Terry <cspt@cs.ru.ac.za>
**   Oct 11, 1997   Version 1.07 (No change)
**   Mar 13, 1998   Version 1.08 (No change)
**********************************************************/

#include "crs.h"
#include "crp.h"

#include "crt.h"
#include "crf.h"
#include "cra.h"
#include "crp.h"
#include "crs.h"
#include <string.h>
#include <stdlib.h>

static void FixString(char *name)
{
  int i, len, dquote, spaces;
  len = strlen(name);
  if (len == 2) { SemError(129); return; }
  if (ignore_case) upcase(name);
  dquote = FALSE; spaces = FALSE;
  for (i = 1; i <= len-2; i++) {
    if (name[i] == '"') dquote = TRUE;
    if (name[i] > 0 && name[i] <= ' ') spaces = TRUE;
  }
  if (!dquote) {
    name[0] = '"'; name[len-1] = '"';
  }
  if (spaces) SemError(124);
}

static void MatchLiteral (int sp)
/* store string either as token or as literal */
{
  PTermNode sn, sn1;
  int matched_sp;

  sn = GetTermP(sp);
  matched_sp = MatchDFA((unsigned char *) sn->name, sp);
  if (matched_sp != 0) {
    sn1 = GetTermP(matched_sp);
    sn1->type = T_CLASSLITTOKEN;
    sn->type  = T_LITTOKEN;
  } else sn->type= T_CLASSTOKEN;
}

static void SetCtx (int gp)
/* set transition code to contextTrans */
{
  PGraphNode gn;
  while (gp > 0) {
    gn = GetGraphP(gp);
    if (gn->type == T_CHAR || gn->type == T_CLASS)
      gn->CONTEXT = T_CONTEXT;
    else
      if (gn->type == T_OPT || gn->type == T_REP)
      SetCtx(gn->INNER);
      else
      if (gn->type == T_ALT) {
      SetCtx(gn->INNER); SetCtx(gn->ALT);
      }
    gp = gn->next;
  }
}

static void StringClass(char *s, Set *items)
{
  s[strlen(s)-1]=0;  s++;  /* Ignore First and Last character */
  while (*s) Set_AddItem(items, *s++);
}

/**************************************************************************/



Error_Func Custom_Error = 0L;

static int Sym;
static int errors = 0;                /*number of detected errors*/
static int ErrDist = MinErrDist;

#define MAXSYM		3


/* Production prototypes */

static void CR ();
static void Ident (char *s);
static void Declaration ();
static void Attribs (int *n);
static void SemText (int *n);
static void Expression (int *n);
static void SetDecl ();
static void TokenDecl (int sec_type);
static void NameDecl ();
static void TokenExpr (int *n);
static void CompSet (PSet items);
static void SimSet (PSet items);
static void String (char *s);
static void ChrSet (int *n);
static void Term (int *n);
static void Factor (int *n);
static void Symbol (char *name);
static void TokenTerm (int *n);
static void TokenFactor (int *n);


#define NSETBITS        16

static unsigned short int SymSet[][MAXSYM] = {
  /*EOFSym identSym stringSym PRODUCTIONSSym EqualSym ENDSym CHARACTERSSym TOKENSSym NAMESSym PRAGMASSym COMMENTSSym IGNORESym LparenPointSym */
  {0x7EC7,0x4,0x80},
  /*identSym stringSym PointSym ANYSym LparenSym BarSym WEAKSym LbrackSym LbraceSym SYNCSym LparenPointSym */
  {0x106,0xBA80,0x82},
  /*identSym ENDSym */
  {0x202,0x0,0x0},
  /*PointSym RparenSym RbrackSym RbraceSym */
  {0x100,0x4400,0x1},
  /*identSym stringSym PointSym ANYSym LparenSym RparenSym BarSym WEAKSym LbrackSym RbrackSym LbraceSym RbraceSym SYNCSym LparenPointSym */
  {0x106,0xFE80,0x83},
  /*PRODUCTIONSSym PointSym CHARACTERSSym TOKENSSym NAMESSym PRAGMASSym COMMENTSSym TOSym NESTEDSym IGNORESym RparenSym RbrackSym RbraceSym */
  {0x7D40,0x4407,0x1},
  /*identSym stringSym LparenSym LbrackSym LbraceSym */
  {0x6,0xA200,0x0},
  {0x0}
};

void GenError(int errno)
{ if (ErrDist >= MinErrDist) {
    if (Custom_Error != 0L)
      (*Custom_Error) (errno, S_NextLine, S_NextCol, S_NextPos);
    errors++;
  }
  ErrDist = 0;
}

void SynError(int errno)
{ if (errno <= MAXERROR) errno = MAXERROR;
  if (ErrDist >= MinErrDist) {
    if (Custom_Error != 0L)
      (*Custom_Error) (errno, S_NextLine, S_NextCol, S_NextPos);
    errors++;
  }
  ErrDist = 0;
}

void SemError(int errno)
{ if (errno <= MAXERROR) errno = MAXERROR;
  if (ErrDist >= MinErrDist) {
    if (Custom_Error != 0L)
      (*Custom_Error) (errno, S_Line, S_Col, S_Pos);
    errors++;
  }
  ErrDist = 0;
}

static void Get()
{ do {
    Sym = S_Get();
    if (Sym <= MAXT) ErrDist ++;
    else {
      if (Sym == OptionsSym) { /*42*/
      	char s[100];
      	  LookAheadString(s, sizeof(s)-1);
      	  SetOptions(s);
      } else
      /* Empty Stmt */ ;
      S_NextPos  = S_Pos;  S_NextCol = S_Col;
      S_NextLine = S_Line; S_NextLen = S_Len;
    }
  } while (Sym > MAXT);
}

static int In (unsigned short int *SymbolSet, int i)
{ return SymbolSet[i / NSETBITS] & (1 << (i % NSETBITS)); }

static void Expect (int n)
{ if (Sym == n) Get(); else GenError(n); }

static void ExpectWeak (int n, int follow)
{ if (Sym == n) Get();
  else {
    GenError(n);
    while (!(In(SymSet[follow], Sym) || In(SymSet[0], Sym))) Get();
  }
}

static int WeakSeparator (int n, int syFol, int repFol)
{ unsigned short int s[MAXSYM];
  int i;

  if (Sym == n) { Get(); return 1; }
  if (In(SymSet[repFol], Sym)) return 0;
  for (i = 0; i < MAXSYM; i++)
    s[i] = SymSet[0][i] | SymSet[syFol][i] | SymSet[repFol][i];
  GenError(n);
  while (!In(s, Sym)) Get();
  return In(SymSet[syFol], Sym);
}

int Successful()
{ return errors == 0; }

/* Productions */

static void CR ()
{
	Name name1;
	int  attr, sem, exp, is_new, sp, type;
	PNTermNode sn;
	Expect(COMPILERSym);
	Ident(compiler_name);
	global_defs.pos  = S_NextPos;
	global_defs.line = S_NextLine;
	while (Sym >= identSym && Sym <= COMPILERSym ||
	       Sym >= EqualSym && Sym <= ENDSym ||
	       Sym >= FROMSym && Sym <= NESTEDSym ||
	       Sym >= CASESym && Sym <= NoSym) {
		Get();
	}
	global_defs.len  =
	  (int) (S_NextPos-global_defs.pos);
	while (Sym >= CHARACTERSSym && Sym <= COMMENTSSym ||
	       Sym == IGNORESym) {
		Declaration();
	}
	while (!(Sym == EOFSym ||
	         Sym == PRODUCTIONSSym)) { GenError(43); Get(); }
	if (Successful()) { /* No Errors so far */
	  if (!MakeDeterministic()) SemError(127);
	};
	Expect(PRODUCTIONSSym);
	while (Sym == identSym) {
		attr = NIL; sem = NIL;
		Ident(name1);
		if ((sp = FindSym(name1, &type)) != UNDEF) {
		  is_new = FALSE;
		  if (type != T_NT) SemError(108); else {
		    sn = GetNTermP(sp);
		    if (sn->graph) SemError(107);
		    sn->line_dec = S_Line;
		  }
		} else {
		  sp = NewSym(name1, T_NT);
		  sn = GetNTermP(sp); is_new = TRUE;
		  sn->line_dec = S_Line;
		};
		if (Sym == LessSym ||
		    Sym == LessPointSym) {
			Attribs(&attr);
		}
		if (!is_new) {
		  if (sn->has_attr && !attr) SemError(105);
		  if (!sn->has_attr && attr) SemError(105);
		}
		if (attr) {
		  sn->attr = attr; sn->has_attr = TRUE;
		};
		ExpectWeak(EqualSym,1);
		if (Sym == LparenPointSym) {
			SemText(&sem);
		}
		Expression(&exp);
		if (sem) {
		  (void) LinkGraph(sem, exp); exp = sem;
		};
		ExpectWeak(PointSym,2);
		sn = GetNTermP(sp); /* reload */
		sn->graph = exp;
		while (!(Sym >= EOFSym && Sym <= identSym ||
		         Sym == ENDSym)) { GenError(44); Get(); }
	}
	Expect(ENDSym);
	Ident(name1);
	if (strcmp(name1, compiler_name)) SemError(117);
	if((sp = FindSym(compiler_name, &type)) != UNDEF) {
	  if (type!=T_NT) SemError(108);
	  else {
	    sn = GetNTermP(sp);
	    if (sn->has_attr) SemError(112);
	    sn->reachable=TRUE;
	  }
	} else SemError(111);
	no_sym = NewSym("No", T_T);
	Expect(PointSym);
}

static void Ident (char *s)
{
	Expect(identSym);
	LexString(s, MAX_ID_LEN-1);
}

static void Declaration ()
{
	Set ignore;
	int n1, n2, nested = FALSE;
	switch (Sym) {
		case CHARACTERSSym:  
			Get();
			while (Sym == identSym) {
				SetDecl();
			}
			break;
		case TOKENSSym:  
			Get();
			while (Sym >= identSym && Sym <= stringSym) {
				TokenDecl(T_T);
			}
			break;
		case NAMESSym:  
			Get();
			while (Sym == identSym) {
				NameDecl();
			}
			break;
		case PRAGMASSym:  
			Get();
			while (Sym >= identSym && Sym <= stringSym) {
				TokenDecl(T_P);
			}
			break;
		case COMMENTSSym:  
			Get();
			Expect(FROMSym);
			TokenExpr(&n1);
			Expect(TOSym);
			TokenExpr(&n2);
			if (Sym == NESTEDSym) {
				Get();
				nested = TRUE;
			}
			NewComment(n1, n2, nested);
			break;
		case IGNORESym:  
			Get();
			if (Sym == CASESym) {
				Get();
				ignore_case = TRUE;
			} else if (Sym >= identSym && Sym <= stringSym ||
			           Sym >= ANYSym && Sym <= CHRSym) {
				Set_Init(&ignore);
				CompSet(&ignore);
				AddIgnore(&ignore);
				if (Set_IsItem(&ignore,0)) SemError(119);
				Set_Done(&ignore);
			} else GenError(45);
			break;
		default :GenError(46); break;
	}
}

static void Attribs (int *n)
{
	long P;
	int Len, Line, Col;
	if (Sym == LessSym) {
		Get();
		P = S_Pos+1; Line = S_Line; Col = S_Col;
		while (Sym >= identSym && Sym <= LessSym ||
		       Sym >= LessPointSym && Sym <= NoSym) {
			if (Sym >= identSym && Sym <= stringSym ||
			    Sym >= numberSym && Sym <= LessSym ||
			    Sym >= LessPointSym && Sym <= NoSym) {
				Get();
			} else if (Sym == badstringSym) {
				Get();
				SemError(102);
			} else GenError(47);
		}
		Expect(GreaterSym);
		Len = (int) (S_Pos - P);
		*n = MakeSemGraph(T_ATTR, P, Len, Line, Col);
	} else if (Sym == LessPointSym) {
		Get();
		P = S_Pos+2; Line = S_Line; Col = S_Col;
		while (Sym >= identSym && Sym <= LessPointSym ||
		       Sym >= LparenPointSym && Sym <= NoSym) {
			if (Sym >= identSym && Sym <= stringSym ||
			    Sym >= numberSym && Sym <= LessPointSym ||
			    Sym >= LparenPointSym && Sym <= NoSym) {
				Get();
			} else if (Sym == badstringSym) {
				Get();
				SemError(102);
			} else GenError(48);
		}
		Expect(PointGreaterSym);
		Len = (int) (S_Pos - P);
		*n = MakeSemGraph(T_ATTR, P, Len, Line, Col);
	} else GenError(49);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人h网站| 亚洲美女免费在线| 色噜噜久久综合| 久久草av在线| 亚洲午夜精品17c| 国产精品天美传媒沈樵| 91精品国产欧美一区二区 | 国产成人h网站| 日韩高清在线电影| 亚洲精品日韩专区silk| 国产欧美在线观看一区| 日韩视频免费直播| 欧美日韩一区二区三区视频| 成人国产亚洲欧美成人综合网| 欧美日韩久久一区二区| 亚洲精品在线观看网站| 欧美在线视频全部完| 国产成人自拍网| 日韩电影在线看| 亚洲h精品动漫在线观看| 中文字幕中文在线不卡住| 亚洲色图在线播放| 久久精品人人做人人爽人人| 91精品国产91久久久久久一区二区 | 日韩和的一区二区| 亚洲成人自拍偷拍| 亚洲黄色小视频| 日韩一区中文字幕| 亚洲欧洲www| 国产精品色婷婷| 欧美亚洲国产怡红院影院| 亚洲图片欧美视频| 中文字幕乱码日本亚洲一区二区| 欧美成人精品福利| 欧美一区二区视频在线观看2020| 欧美久久久久久久久中文字幕| 一本大道久久a久久综合婷婷| 成人午夜精品在线| 风间由美一区二区三区在线观看| 国产一区二区不卡老阿姨| 精品亚洲aⅴ乱码一区二区三区| 青青草原综合久久大伊人精品| 亚洲国产精品自拍| 午夜精品视频一区| 亚洲成人免费av| 天天av天天翘天天综合网色鬼国产| 亚洲va欧美va人人爽午夜| 亚洲一区二区视频在线观看| 无吗不卡中文字幕| 免费成人在线网站| 韩国av一区二区三区在线观看| 国产综合一区二区| 国产福利一区二区三区视频在线| 婷婷夜色潮精品综合在线| 日韩国产在线一| 久久精品国产一区二区三 | 91福利国产成人精品照片| 91极品视觉盛宴| 日韩一区二区精品| 欧美大肚乱孕交hd孕妇| 久久久久久久网| 亚洲精品久久久蜜桃| 日韩av不卡一区二区| 狠狠色狠狠色综合系列| 成人av在线电影| 欧美性视频一区二区三区| 日韩欧美综合在线| 国产精品毛片高清在线完整版| 亚洲理论在线观看| 免费久久精品视频| 播五月开心婷婷综合| 欧美日韩成人在线| 国产色产综合色产在线视频| 亚洲男人都懂的| 精品制服美女丁香| 色婷婷香蕉在线一区二区| 欧美一区二区日韩| 17c精品麻豆一区二区免费| 麻豆成人综合网| fc2成人免费人成在线观看播放| 欧美日韩第一区日日骚| 国产日产欧美精品一区二区三区| 夜夜精品视频一区二区| 国产高清不卡一区| 欧美老肥妇做.爰bbww| 欧美激情一区二区三区全黄| 午夜成人在线视频| 成人av午夜电影| 欧美一区二区三区在线视频 | 奇米综合一区二区三区精品视频| 成人亚洲精品久久久久软件| 欧美精品一二三四| 亚洲人妖av一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 91香蕉视频污| 久久精子c满五个校花| 五月激情综合婷婷| 一本久道久久综合中文字幕| 国产网红主播福利一区二区| 五月开心婷婷久久| 91黄色激情网站| 中文av字幕一区| 看片的网站亚洲| 欧美色图在线观看| 亚洲人快播电影网| 成人黄色片在线观看| 精品乱人伦小说| 午夜激情一区二区三区| 日本韩国一区二区三区视频| 日本一区二区电影| 国产乱码字幕精品高清av| 91精选在线观看| 亚洲aaa精品| 欧美亚洲一区二区在线| 中文字幕日韩一区| 成人白浆超碰人人人人| 久久久久国产精品麻豆| 久久国产精品第一页| 欧美电影影音先锋| 亚洲午夜激情网页| 欧美图区在线视频| 国产91丝袜在线播放九色| 日韩西西人体444www| 免费观看日韩av| 欧美大胆人体bbbb| 日韩成人伦理电影在线观看| 欧美性videosxxxxx| 亚洲一区二区三区在线看| 91成人在线精品| 亚洲福利一区二区三区| 欧美影视一区二区三区| 亚洲成人在线免费| 欧美精选午夜久久久乱码6080| 亚洲成人激情社区| 欧美精品电影在线播放| 男男成人高潮片免费网站| 日韩午夜小视频| 久久91精品久久久久久秒播| 精品裸体舞一区二区三区| 国产综合一区二区| 中文在线一区二区| 成人免费视频播放| 最好看的中文字幕久久| 日本道精品一区二区三区| 亚洲综合一区在线| 欧美日韩综合在线免费观看| 午夜精品免费在线观看| 日韩欧美专区在线| 国产精品一级二级三级| 欧美激情中文不卡| 日本丶国产丶欧美色综合| 亚洲高清视频在线| 欧美一级高清片| 国产成人免费视频网站 | 久久精品人人做| 成人a区在线观看| 亚洲免费av高清| 欧美一区二区三区在线电影 | 91啦中文在线观看| 亚洲在线视频一区| 日韩你懂的在线播放| 成人免费视频视频| 亚洲电影一区二区| 日韩一区二区麻豆国产| 成人av电影在线观看| 亚洲bt欧美bt精品| 久久久久久久久久久久电影| 色婷婷综合久久久| 男女男精品视频| 中文字幕在线不卡视频| 欧美另类高清zo欧美| 国产精品一区二区视频| 亚洲午夜精品一区二区三区他趣| 欧美成人三级在线| 色域天天综合网| 国内一区二区视频| 一区二区不卡在线播放 | 欧美一区二区精品久久911| 国产**成人网毛片九色| 亚洲午夜激情网站| 久久精品亚洲乱码伦伦中文| 色噜噜狠狠成人中文综合| 麻豆91在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 偷窥少妇高潮呻吟av久久免费| 久久精品视频一区二区三区| 欧美三级欧美一级| 成人中文字幕电影| 日本不卡一区二区三区| 中文字幕制服丝袜一区二区三区| 日韩一级片在线观看| 在线观看三级视频欧美| 国产成人免费在线观看不卡| 日韩成人dvd| 亚洲精品高清在线| 国产日韩欧美麻豆| 日韩视频在线你懂得| 在线视频欧美精品| 成人av午夜影院| 国产在线视视频有精品|