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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parser.cs

?? 全功能c#編譯器
?? CS
?? 第 1 頁 / 共 5 頁
字號:

#line  1 "cs.ATG" 
using System.Drawing;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using ICSharpCode.SharpRefactory.Parser;
using ICSharpCode.SharpRefactory.Parser.AST;
using System;
using System.Reflection;

namespace ICSharpCode.SharpRefactory.Parser {



public class Parser
{
	const int maxT = 125;

	const  bool   T            = true;
	const  bool   x            = false;
	const  int    minErrDist   = 2;
	const  string errMsgFormat = "-- line {0} col {1}: {2}";  // 0=line, 1=column, 2=text
	int    errDist             = minErrDist;
	Errors errors;
	Lexer  lexer;

	public Errors Errors {
		get {
			return errors;
		}
	}


#line  10 "cs.ATG" 
string assemblyName = null;

public CompilationUnit compilationUnit;

public string ContainingAssembly {
	set {
		assemblyName = value;
	}
}

Token t {
	get {
		return lexer.Token;
	}
}
Token la {
	get {
		return lexer.LookAhead;
	}
}

Hashtable typeStrings     = null;
ArrayList usingNamespaces = null;

public void Error(string s)
{
	if (errDist >= minErrDist) {
		errors.Error(la.line, la.col, s);
	}
	errDist = 0;
}

public Expression ParseExpression(Lexer lexer)
{
	this.errors = lexer.Errors;
	this.lexer = lexer;
	errors.SynErr = new ErrorCodeProc(SynErr);
	lexer.NextToken();
	Expression expr;
	Expr(out expr);
	return expr;
}

bool IsTypeCast()
{
	if (IsSimpleTypeCast()) {
		return true;
	}
	
	if (assemblyName != null) {
		return CheckTypeCast();
	}
	
	return GuessTypeCast();
}

bool IsSimpleTypeCast()
{
	// check: "(" pointer or array of keyword type ")"
	
	if (la.kind != Tokens.OpenParenthesis) {
		return false;
	}

	StartPeek();
	Token pt1 = Peek();
	Token pt  = Peek();
	
	return ParserUtil.IsTypeKW(pt1) && IsPointerOrDims(ref pt) &&
	       pt.kind == Tokens.CloseParenthesis;
}

bool CheckTypeCast()
{
	// check: leading "(" pointer or array of some type ")"

	if (la.kind != Tokens.OpenParenthesis) {
		return false;
	}
	
	string qualident;
	
	StartPeek();
	Token pt = Peek();
	
	return IsQualident(ref pt, out qualident) && IsPointerOrDims(ref pt) && 
	       pt.kind == Tokens.CloseParenthesis && IsType(qualident);		
}

bool IsType(string qualident)
{
	if (typeStrings == null) {
		CreateTypeStrings();
	}
	
	if (typeStrings.ContainsValue(qualident)) {
		return true;
	}
	
	foreach (string ns in usingNamespaces) {
		if (typeStrings.ContainsValue(String.Concat(ns, '.', qualident))) {
			return true;
		}
	}
	return false;
}

bool GuessTypeCast()
{
	// check: "(" pointer or array of some type ")" possible type cast successor
	
	if (la.kind != Tokens.OpenParenthesis) return false;
	
	string qualident;
	
	StartPeek();
	Token pt = Peek();
	
	if (IsQualident(ref pt, out qualident) && IsPointerOrDims(ref pt) && 
	    pt.kind == Tokens.CloseParenthesis) {
		// check successor
		pt = Peek();
		return pt.kind == Tokens.Identifier || pt.kind == Tokens.Literal   ||
		       pt.kind == Tokens.OpenParenthesis   || ParserUtil.IsUnaryOperator(pt)         ||
		       pt.kind == Tokens.New        || pt.kind == Tokens.This      ||
		       pt.kind == Tokens.Base       || pt.kind == Tokens.Null      ||
		       pt.kind == Tokens.Checked    || pt.kind == Tokens.Unchecked ||
		       pt.kind == Tokens.Typeof     || pt.kind == Tokens.Sizeof    ||
		       (ParserUtil.IsTypeKW(pt) && Peek().kind == Tokens.Dot);
	} else return false;
}

void CreateTypeStrings()
{
	Assembly a;
	Type[] types;
	AssemblyName [] aNames;
	
	if (assemblyName != null && assemblyName.Length > 0) {    /* AW 2002-12-30 add check for length > 0 */
		typeStrings = new Hashtable();
		a = Assembly.LoadFrom(assemblyName);
		types = a.GetTypes();
		foreach (Type t in types) 
			typeStrings.Add(t.FullName.GetHashCode(), t.FullName);
		aNames = a.GetReferencedAssemblies();
		
		for (int i = 0; i < aNames.Length; i++) {
			a = Assembly.LoadFrom(aNames[i].Name);
			types = a.GetExportedTypes();
			
			foreach(Type t in types)
				if (usingNamespaces.Contains(t.FullName.Substring(0, t.FullName.LastIndexOf('.'))))
					typeStrings.Add(t.FullName.GetHashCode(), t.FullName);
		}
	}
}

/* Checks whether the next sequences of tokens is a qualident *
 * and returns the qualident string                           */
/* !!! Proceeds from current peek position !!! */
bool IsQualident(ref Token pt, out string qualident)
{
	if (pt.kind == Tokens.Identifier) {
		StringBuilder qualidentsb = new StringBuilder(pt.val);
		pt = Peek();
		while (pt.kind == Tokens.Dot) {
			pt = Peek();
			if (pt.kind != Tokens.Identifier) {
				qualident = String.Empty;
				return false;
			}
			qualidentsb.Append('.');
			qualidentsb.Append(pt.val);
			pt = Peek();
		}
		qualident = qualidentsb.ToString();
		return true;
	}
	qualident = String.Empty;
	return false;
}

/* skip: { "*" | "[" { "," } "]" } */
/* !!! Proceeds from current peek position !!! */
bool IsPointerOrDims (ref Token pt)
{
	for (;;) {
		if (pt.kind == Tokens.OpenSquareBracket) {
			do pt = Peek();
			while (pt.kind == Tokens.Comma);
			if (pt.kind != Tokens.CloseSquareBracket) return false;
		} else if (pt.kind != Tokens.Times) break;
		pt = Peek();
	}
	return true;
}

/* Return the n-th token after the current lookahead token */
void StartPeek()
{
	lexer.StartPeek();
}

Token Peek()
{
	return lexer.Peek();
}

Token Peek (int n)
{
	lexer.StartPeek();
	Token x = la;
	while (n > 0) {
		x = lexer.Peek();
		n--;
	}
	return x;
}

/*-----------------------------------------------------------------*
 * Resolver routines to resolve LL(1) conflicts:                   *                                                  *
 * These resolution routine return a boolean value that indicates  *
 * whether the alternative at hand shall be choosen or not.        *
 * They are used in IF ( ... ) expressions.                        *       
 *-----------------------------------------------------------------*/

/* True, if ident is followed by "=" */
bool IdentAndAsgn ()
{
	return la.kind == Tokens.Identifier && Peek(1).kind == Tokens.Assign;
}

bool IsAssignment () { return IdentAndAsgn(); }

/* True, if ident is followed by ",", "=", or ";" */
bool IdentAndCommaOrAsgnOrSColon () {
	int peek = Peek(1).kind;
	return la.kind == Tokens.Identifier && 
	       (peek == Tokens.Comma || peek == Tokens.Assign || peek == Tokens.Semicolon);
}
bool IsVarDecl () { return IdentAndCommaOrAsgnOrSColon(); }

/* True, if the comma is not a trailing one, *
 * like the last one in: a, b, c,            */
bool NotFinalComma () {
	int peek = Peek(1).kind;
	return la.kind == Tokens.Comma &&
	       peek != Tokens.CloseCurlyBrace && peek != Tokens.CloseSquareBracket;
}

/* True, if "void" is followed by "*" */
bool NotVoidPointer () {
	return la.kind == Tokens.Void && Peek(1).kind != Tokens.Times;
}

/* True, if "checked" or "unchecked" are followed by "{" */
bool UnCheckedAndLBrace () {
	return la.kind == Tokens.Checked || la.kind == Tokens.Unchecked &&
	       Peek(1).kind == Tokens.OpenCurlyBrace;
}

/* True, if "." is followed by an ident */
bool DotAndIdent () {
	return la.kind == Tokens.Dot && Peek(1).kind == Tokens.Identifier;
}

/* True, if ident is followed by ":" */
bool IdentAndColon () {
	return la.kind == Tokens.Identifier && Peek(1).kind == Tokens.Colon;
}

bool IsLabel () { return IdentAndColon(); }

/* True, if ident is followed by "(" */
bool IdentAndLPar () {
	return la.kind == Tokens.Identifier && Peek(1).kind == Tokens.OpenParenthesis;
}

/* True, if "catch" is followed by "(" */
bool CatchAndLPar () {
	return la.kind == Tokens.Catch && Peek(1).kind == Tokens.OpenParenthesis;
}
bool IsTypedCatch () { return CatchAndLPar(); }

/* True, if "[" is followed by the ident "assembly" */
bool IsGlobalAttrTarget () {
	Token pt = Peek(1);
	return la.kind == Tokens.OpenSquareBracket && 
	       pt.kind == Tokens.Identifier && pt.val == "assembly";
}

/* True, if "[" is followed by "," or "]" */
bool LBrackAndCommaOrRBrack () {
	int peek = Peek(1).kind;
	return la.kind == Tokens.OpenSquareBracket &&
	       (peek == Tokens.Comma || peek == Tokens.CloseSquareBracket);
}

bool IsDims () { return LBrackAndCommaOrRBrack(); }

/* True, if "[" is followed by "," or "]" *
 * or if the current token is "*"         */
bool TimesOrLBrackAndCommaOrRBrack () {
	return la.kind == Tokens.Times || LBrackAndCommaOrRBrack();
}
bool IsPointerOrDims () { return TimesOrLBrackAndCommaOrRBrack(); }
bool IsPointer () { return la.kind == Tokens.Times; }

/* True, if lookahead is a primitive type keyword, or *
 * if it is a type declaration followed by an ident   */
bool IsLocalVarDecl () {
	if ((ParserUtil.IsTypeKW(la) && Peek(1).kind != Tokens.Dot) || la.kind == Tokens.Void) return true;
	
	StartPeek();
	Token pt = la ;  // peek token
	string ignore;
	
	return IsQualident(ref pt, out ignore) && IsPointerOrDims(ref pt) && 
	       pt.kind == Tokens.Identifier;
}

/* True, if lookahead ident is "get" */
bool IdentIsGet () {
	return la.kind == Tokens.Identifier && la.val == "get";
}

/* True, if lookahead ident is "set" */
bool IdentIsSet () {
	return la.kind == Tokens.Identifier && la.val == "set";
}

/* True, if lookahead ident is "add" */
bool IdentIsAdd () {
	return la.kind == Tokens.Identifier && la.val == "add";
}

/* True, if lookahead ident is "remove" */
bool IdentIsRemove () {
	return la.kind == Tokens.Identifier && la.val == "remove";
}

/* True, if lookahead is a local attribute target specifier, *
 * i.e. one of "event", "return", "field", "method",         *
 *             "module", "param", "property", or "type"      */
bool IsLocalAttrTarget () {
	int cur = la.kind;
	string val = la.val;

	return (cur == Tokens.Event || cur == Tokens.Return ||
	        (cur == Tokens.Identifier &&
	         (val == "field" || val == "method"   || val == "module" ||
	          val == "param" || val == "property" || val == "type"))) &&
	       Peek(1).kind == Tokens.Colon;
}


/*------------------------------------------------------------------------*
 *----- LEXER TOKEN LIST  ------------------------------------------------*
 *------------------------------------------------------------------------*/


/*

*/
	void SynErr(int n)
	{
		if (errDist >= minErrDist) {
			errors.SynErr(lexer.LookAhead.line, lexer.LookAhead.col, n);
		}
		errDist = 0;
	}

	public void SemErr(string msg)
	{
		if (errDist >= minErrDist) {
			errors.Error(lexer.Token.line, lexer.Token.col, msg);
		}
		errDist = 0;
	}
	
	void Expect(int n)
	{
		if (lexer.LookAhead.kind == n) {
			lexer.NextToken();
		} else {
			SynErr(n);
		}
	}
	
	bool StartOf(int s)
	{
		return set[s, lexer.LookAhead.kind];
	}
	
	void ExpectWeak(int n, int follow)
	{
		if (lexer.LookAhead.kind == n) {
			lexer.NextToken();
		} else {
			SynErr(n);
			while (!StartOf(follow)) {
				lexer.NextToken();
			}
		}
	}
	
	bool WeakSeparator(int n, int syFol, int repFol)
	{
		bool[] s = new bool[maxT + 1];
		
		if (lexer.LookAhead.kind == n) {
			lexer.NextToken();
			return true; 
		} else if (StartOf(repFol)) {
			return false;
		} else {
			for (int i = 0; i <= maxT; i++) {
				s[i] = set[syFol, i] || set[repFol, i] || set[0, i];
			}
			SynErr(n);
			while (!s[lexer.LookAhead.kind]) {
				lexer.NextToken();
			}
			return StartOf(syFol);
		}
	}
	
	void CS() {

#line  522 "cs.ATG" 
		compilationUnit = new CompilationUnit(); 
		while (la.kind == 120) {
			UsingDirective();
		}
		while (
#line  525 "cs.ATG" 
IsGlobalAttrTarget()) {
			GlobalAttributeSection();
		}
		while (StartOf(1)) {
			NamespaceMemberDecl();
		}
		Expect(0);
	}

	void UsingDirective() {

#line  532 "cs.ATG" 
		usingNamespaces = new ArrayList();
		string qualident = null, aliasident = null;
		
		Expect(120);

#line  536 "cs.ATG" 
		Point startPos = t.Location;
		INode node     = null; 
		
		if (
#line  539 "cs.ATG" 
IsAssignment()) {
			lexer.NextToken();

#line  539 "cs.ATG" 
			aliasident = t.val; 
			Expect(3);
		}
		Qualident(
#line  540 "cs.ATG" 
out qualident);

#line  540 "cs.ATG" 
		if (qualident != null && qualident.Length > 0) {
		 if (aliasident != null) {
		   node = new UsingAliasDeclaration(aliasident, qualident);
		 } else {
		     usingNamespaces.Add(qualident);
		     node = new UsingDeclaration(qualident);
		 }
		}
		
		Expect(10);

#line  549 "cs.ATG" 
		node.StartLocation = startPos;
		node.EndLocation   = t.EndLocation;
		compilationUnit.AddChild(node);
		
	}

	void GlobalAttributeSection() {
		Expect(16);

#line  558 "cs.ATG" 
		Point startPos = t.Location; 
		Expect(1);

#line  558 "cs.ATG" 
		if (t.val != "assembly") Error("global attribute target specifier (\"assembly\") expected");
		string attributeTarget = t.val;
		ArrayList attributes = new ArrayList();
		ICSharpCode.SharpRefactory.Parser.AST.Attribute attribute;
		
		Expect(9);
		Attribute(
#line  563 "cs.ATG" 
out attribute);

#line  563 "cs.ATG" 
		attributes.Add(attribute); 
		while (
#line  564 "cs.ATG" 
NotFinalComma()) {
			Expect(12);
			Attribute(
#line  564 "cs.ATG" 
out attribute);

#line  564 "cs.ATG" 
			attributes.Add(attribute); 
		}
		if (la.kind == 12) {
			lexer.NextToken();
		}
		Expect(17);

#line  566 "cs.ATG" 
		AttributeSection section = new AttributeSection(attributeTarget, attributes);
		section.StartLocation = startPos;
		section.EndLocation = t.EndLocation;
		compilationUnit.AddChild(section);
		
	}

	void NamespaceMemberDecl() {

#line  648 "cs.ATG" 
		AttributeSection section;
		ArrayList attributes = new ArrayList();
		Modifiers m = new Modifiers(this);
		string qualident;
		
		if (la.kind == 87) {
			lexer.NextToken();

#line  654 "cs.ATG" 
			Point startPos = t.Location; 
			Qualident(
#line  655 "cs.ATG" 
out qualident);

#line  655 "cs.ATG" 
			INode node =  new NamespaceDeclaration(qualident);
			node.StartLocation = startPos;
			compilationUnit.AddChild(node);
			compilationUnit.BlockStart(node);
			
			Expect(14);
			while (la.kind == 120) {
				UsingDirective();
			}
			while (StartOf(1)) {
				NamespaceMemberDecl();
			}
			Expect(15);
			if (la.kind == 10) {
				lexer.NextToken();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久快鸭| 亚洲色图.com| 69p69国产精品| 欧美日韩免费一区二区三区视频| www.亚洲人| 成人av电影免费观看| 波多野结衣在线aⅴ中文字幕不卡| 国产成a人亚洲| 国产999精品久久久久久绿帽| 国产精品一二二区| 国产精品自拍一区| 不卡一区二区中文字幕| www.日韩在线| 91成人在线精品| 欧美日韩一二区| 在线不卡中文字幕| 欧美一区二区三级| 欧美videos中文字幕| 久久这里只有精品首页| 久久精品一区蜜桃臀影院| 亚洲国产高清在线| 日韩码欧中文字| 亚洲成人激情社区| 青青草精品视频| 国内精品国产成人| 成人精品视频一区二区三区尤物| 成人激情小说网站| 91视频.com| 欧美三级电影一区| 日韩欧美不卡在线观看视频| 久久久蜜臀国产一区二区| 中文文精品字幕一区二区| 亚洲蜜臀av乱码久久精品| 亚洲18色成人| 国产麻豆一精品一av一免费 | 日韩理论片在线| 一区二区不卡在线播放| 青青草成人在线观看| 国产精品一区在线观看你懂的| 99在线精品视频| 欧美一区二区三区视频在线观看| 久久中文字幕电影| 一区二区三区四区中文字幕| 免费一级片91| va亚洲va日韩不卡在线观看| 欧美日韩午夜在线视频| 精品久久久久久久久久久久久久久久久| 国产精品视频在线看| 亚洲一级电影视频| 国产精品资源在线观看| 在线观看日韩电影| 国产亚洲精品免费| 午夜精品久久久久久久| 国产盗摄女厕一区二区三区| 欧美综合在线视频| 国产亚洲短视频| 亚洲国产视频一区| 国产jizzjizz一区二区| 欧美日韩精品一区二区三区蜜桃| 久久综合色天天久久综合图片| 亚洲美女屁股眼交3| 精品一区二区av| 在线观看国产91| 国产亚洲欧美日韩在线一区| 亚洲电影在线免费观看| 成人精品一区二区三区四区 | 91精品一区二区三区久久久久久| 久久久久亚洲综合| 日韩成人av影视| 色综合天天狠狠| 久久精品亚洲精品国产欧美| 午夜久久久久久久久| 成年人午夜久久久| 精品99一区二区| 偷偷要91色婷婷| 欧美影视一区二区三区| 亚洲国产精品黑人久久久| 九色porny丨国产精品| 欧美色欧美亚洲另类二区| 中文字幕av一区二区三区高| 久草中文综合在线| 欧美日韩国产成人在线免费| 亚洲三级在线免费| 粉嫩av一区二区三区粉嫩| 欧美电影免费观看高清完整版在 | 亚洲激情在线激情| 粉嫩在线一区二区三区视频| wwwwww.欧美系列| 免费观看30秒视频久久| 欧美日韩国产色站一区二区三区| 亚洲天堂网中文字| av网站免费线看精品| 国产亚洲精品7777| 国产一区二区精品久久91| 日韩限制级电影在线观看| 亚洲va欧美va人人爽午夜| 色婷婷精品大在线视频| 综合网在线视频| 91性感美女视频| 亚洲欧美中日韩| av一二三不卡影片| 一区在线播放视频| 91视视频在线直接观看在线看网页在线看| 久久精品免视看| 国产激情偷乱视频一区二区三区| 精品久久久久久无| 国产一区欧美二区| 久久久不卡网国产精品一区| 麻豆久久久久久| 精品国产人成亚洲区| 极品美女销魂一区二区三区| 日韩一区二区三区视频在线 | 天堂资源在线中文精品| 欧美人妖巨大在线| 日本视频中文字幕一区二区三区| 在线播放中文一区| 美洲天堂一区二卡三卡四卡视频 | 日韩欧美成人午夜| 国内精品免费**视频| 国产日韩高清在线| 成人h动漫精品| 亚洲精品欧美二区三区中文字幕| 一本到三区不卡视频| 一区二区免费在线| 欧美浪妇xxxx高跟鞋交| 日韩电影一二三区| 欧美精品一区二区三区视频| 国产美女精品人人做人人爽| 国产精品美女久久福利网站| 91视频在线看| 日本中文字幕一区二区有限公司| 欧美成人一区二区三区在线观看 | 欧美一区二区三区在线视频 | 色噜噜狠狠色综合欧洲selulu| 亚洲激情图片qvod| 欧美一区二区三级| 粉嫩欧美一区二区三区高清影视| 亚洲久草在线视频| 91麻豆精品国产91久久久使用方法| 美女一区二区视频| 国产精品沙发午睡系列990531| 在线观看免费视频综合| 麻豆精品视频在线观看视频| 久久精品一区二区三区四区| 91视视频在线观看入口直接观看www | 欧美放荡的少妇| 国产精品自拍一区| 亚洲一二三专区| 久久久99久久| 在线亚洲一区二区| 精品中文av资源站在线观看| 亚洲欧洲99久久| 日韩片之四级片| 99精品久久99久久久久| 天天综合天天做天天综合| 国产午夜精品一区二区| 欧美亚洲综合久久| 国产成人8x视频一区二区| 午夜精品久久久久久久久| 国产女主播一区| 欧美精品在线视频| www.日韩在线| 激情综合色丁香一区二区| 亚洲精品视频在线| 久久夜色精品一区| 欧美日韩免费观看一区三区| 精品午夜久久福利影院| 亚洲免费色视频| 国产亚洲一本大道中文在线| 欧美高清视频不卡网| www.在线成人| 国产精品一区二区在线看| 性欧美大战久久久久久久久| 国产精品久久久久久久久动漫| 欧美一二三区在线| 欧美天天综合网| 成人黄页在线观看| 精品无人区卡一卡二卡三乱码免费卡| 亚洲一区二区三区视频在线播放| 国产日韩欧美a| 精品噜噜噜噜久久久久久久久试看| 色8久久精品久久久久久蜜| 国产福利一区二区| 麻豆91小视频| 亚洲bt欧美bt精品| 亚洲一区二区三区四区五区中文 | 亚洲永久精品国产| 亚洲欧洲成人精品av97| 久久久欧美精品sm网站| 日韩午夜激情视频| 在线综合视频播放| 欧美日韩国产首页| 欧洲中文字幕精品| 在线日韩国产精品| 91小视频免费观看| a级高清视频欧美日韩| 懂色中文一区二区在线播放| 久久国产精品色婷婷| 日本不卡不码高清免费观看| 亚洲在线中文字幕|