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

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

?? parser.cs

?? SharpDevelop2.0.0 c#開發免費工具
?? CS
?? 第 1 頁 / 共 5 頁
字號:

#line  1 "cs.ATG" 
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using ICSharpCode.NRefactory.Parser;
using ICSharpCode.NRefactory.Parser.AST;
using ASTAttribute = ICSharpCode.NRefactory.Parser.AST.Attribute;
using Types = ICSharpCode.NRefactory.Parser.AST.ClassType;
/*
  Parser.frame file for NRefactory.
 */
using System;
using System.Reflection;

namespace ICSharpCode.NRefactory.Parser.CSharp {



internal class Parser : AbstractParser
{
	const int maxT = 125;

	const  bool   T            = true;
	const  bool   x            = false;
	

#line  14 "cs.ATG" 
string        assemblyName     = null;
StringBuilder qualidentBuilder = new StringBuilder();

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

Token t {
	[System.Diagnostics.DebuggerStepThrough]
	get {
		return lexer.Token;
	}
}

Token la {
	[System.Diagnostics.DebuggerStepThrough]
	get {
		return lexer.LookAhead;
	}
}

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

public override Expression ParseExpression()
{
	lexer.NextToken();
	Expression expr;
	Expr(out expr);
	return expr;
}
// Begin ISTypeCast
bool IsTypeCast()
{
	if (la.kind != Tokens.OpenParenthesis) {
		return false;
	}
	if (IsSimpleTypeCast()) {
		return true;
	}
	return GuessTypeCast();
}

// "(" ( typeKW [ "[" {","} "]" | "*" ] | void  ( "[" {","} "]" | "*" ) ) ")"
// only for built-in types, all others use GuessTypeCast!
bool IsSimpleTypeCast ()
{
	// assert: la.kind == _lpar
	lexer.StartPeek();
	Token pt = lexer.Peek();
	
	if (!IsTypeKWForTypeCast(ref pt)) {
		return false;
	}
	if (pt.kind == Tokens.Question)
		pt = lexer.Peek();
	return pt.kind == Tokens.CloseParenthesis;
}

/* !!! Proceeds from current peek position !!! */
bool IsTypeKWForTypeCast(ref Token pt)
{
	if (Tokens.TypeKW[pt.kind]) {
		pt = lexer.Peek();
		return IsPointerOrDims(ref pt) && SkipQuestionMark(ref pt);
	} else if (pt.kind == Tokens.Void) {
		pt = lexer.Peek();
		return IsPointerOrDims(ref pt);
	}
	return false;
}

/* !!! Proceeds from current peek position !!! */
bool IsTypeNameOrKWForTypeCast(ref Token pt)
{
	if (IsTypeKWForTypeCast(ref pt))
		return true;
	else
		return IsTypeNameForTypeCast(ref pt);
}

// TypeName = ident [ "::" ident ] { ["<" TypeNameOrKW { "," TypeNameOrKW } ">" ] "." ident } ["?"] PointerOrDims
/* !!! Proceeds from current peek position !!! */
bool IsTypeNameForTypeCast(ref Token pt)
{
	// ident
	if (pt.kind != Tokens.Identifier) {
		return false;
	}	
	pt = Peek();
	// "::" ident
	if (pt.kind == Tokens.DoubleColon) {
		pt = Peek();
		if (pt.kind != Tokens.Identifier) {
			return false;
		}
		pt = Peek();
	}
	// { ["<" TypeNameOrKW { "," TypeNameOrKW } ">" ] "." ident }
	while (true) {
		if (pt.kind == Tokens.LessThan) {
			do {
				pt = Peek();
				if (!IsTypeNameOrKWForTypeCast(ref pt)) {
					return false;
				}
			} while (pt.kind == Tokens.Comma);
			if (pt.kind != Tokens.GreaterThan) {
				return false;
			}
			pt = Peek();
		}
		if (pt.kind != Tokens.Dot)
			break;
		pt = Peek();
		if (pt.kind != Tokens.Identifier) {
			return false;
		}
		pt = Peek();
	}
	// ["?"]
	if (pt.kind == Tokens.Question) {
		pt = Peek();
	}
	if (pt.kind == Tokens.Times || pt.kind == Tokens.OpenSquareBracket) {
		return IsPointerOrDims(ref pt);
	}
	return true;
}

// "(" TypeName ")" castFollower
bool GuessTypeCast ()
{
	// assert: la.kind == _lpar
	StartPeek();
	Token pt = Peek();

	if (!IsTypeNameForTypeCast(ref pt)) {
		return false;
	}
	
	// ")"
	if (pt.kind != Tokens.CloseParenthesis) {
		return false;
	}
	// check successor
	pt = Peek();
	return Tokens.CastFollower[pt.kind] || (Tokens.TypeKW[pt.kind] && lexer.Peek().kind == Tokens.Dot);
}
// END IsTypeCast

/* 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) {
		qualidentBuilder.Length = 0; qualidentBuilder.Append(pt.val);
		pt = Peek();
	while (pt.kind == Tokens.Dot || pt.kind == Tokens.DoubleColon) {
			pt = Peek();
			if (pt.kind != Tokens.Identifier) {
				qualident = String.Empty;
				return false;
			}
			qualidentBuilder.Append('.');
			qualidentBuilder.Append(pt.val);
			pt = Peek();
		}
		qualident = qualidentBuilder.ToString();
		return true;
	}
	qualident = String.Empty;
	return false;
}

/* Skips generic type extensions */
/* !!! Proceeds from current peek position !!! */

/* 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; }


bool SkipGeneric(ref Token pt)
{
	if (pt.kind == Tokens.LessThan) {
		do {
			pt = Peek();
			if (!IsTypeNameOrKWForTypeCast(ref pt)) return false;
		} while (pt.kind == Tokens.Comma);
		if (pt.kind != Tokens.GreaterThan) return false;
		pt = Peek();
	}
	return true;
}
bool SkipQuestionMark(ref Token pt)
{
	if (pt.kind == Tokens.Question) {
		pt = Peek();
	}
	return true;
}

/* True, if lookahead is a primitive type keyword, or */
/* if it is a type declaration followed by an ident   */
bool IsLocalVarDecl () {
	if (IsYieldStatement()) {
		return false;
	}
	if ((Tokens.TypeKW[la.kind] && Peek(1).kind != Tokens.Dot) || la.kind == Tokens.Void) {
		return true;
	}
	
	StartPeek();
	Token pt = la;
	return IsTypeNameOrKWForTypeCast(ref pt) && pt.kind == Tokens.Identifier;
}

/* True if lookahead is type parameters (<...>) followed by the specified token */
bool IsGenericFollowedBy(int token)
{
	Token t = la;
	if (t.kind != Tokens.LessThan) return false;
	StartPeek();
	return SkipGeneric(ref t) && t.kind == token;
}

bool IsExplicitInterfaceImplementation()
{
	StartPeek();
	Token pt = la;
	pt = Peek();
	if (pt.kind == Tokens.Dot || pt.kind == Tokens.DoubleColon)
		return true;
	if (pt.kind == Tokens.LessThan) {
		if (SkipGeneric(ref pt))
			return pt.kind == Tokens.Dot;
	}
	return false;
}

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

/* 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";
}

bool IsNotYieldStatement () {
	return !IsYieldStatement();
}
/* True, if lookahead ident is "yield" and than follows a break or return */
bool IsYieldStatement () {
	return la.kind == Tokens.Identifier && la.val == "yield" && (Peek(1).kind == Tokens.Return || Peek(1).kind == Tokens.Break);
}

/* 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;
}

bool IsShiftRight() 
{
	Token next = Peek(1);
	// TODO : Add col test (seems not to work, lexer bug...) :  && la.col == next.col - 1
	return (la.kind == Tokens.GreaterThan && next.kind == Tokens.GreaterThan);
}

bool IsTypeReferenceExpression(Expression expr)
{
	if (expr is TypeReferenceExpression) return ((TypeReferenceExpression)expr).TypeReference.GenericTypes.Count == 0;
	while (expr is FieldReferenceExpression) {
		expr = ((FieldReferenceExpression)expr).TargetObject;
		if (expr is TypeReferenceExpression) return true;
	}
	return expr is IdentifierExpression;
}

TypeReferenceExpression GetTypeReferenceExpression(Expression expr, List<TypeReference> genericTypes)
{
	TypeReferenceExpression	tre = expr as TypeReferenceExpression;
	if (tre != null) {
		return new TypeReferenceExpression(new TypeReference(tre.TypeReference.Type, tre.TypeReference.PointerNestingLevel, tre.TypeReference.RankSpecifier, genericTypes));
	}
	StringBuilder b = new StringBuilder();
	if (!WriteFullTypeName(b, expr)) {
		// there is some TypeReferenceExpression hidden in the expression
		while (expr is FieldReferenceExpression) {
			expr = ((FieldReferenceExpression)expr).TargetObject;
		}
		tre = expr as TypeReferenceExpression;
		if (tre != null) {
			TypeReference typeRef = tre.TypeReference;
			if (typeRef.GenericTypes.Count == 0) {
				typeRef = typeRef.Clone();
				typeRef.Type += "." + b.ToString();
				typeRef.GenericTypes.AddRange(genericTypes);
			} else {
				typeRef = new InnerClassTypeReference(typeRef, b.ToString(), genericTypes);
			}
			return new TypeReferenceExpression(typeRef);
		}
	}
	return new TypeReferenceExpression(new TypeReference(b.ToString(), 0, null, genericTypes));
}

/* Writes the type name represented through the expression into the string builder. */
/* Returns true when the expression was converted successfully, returns false when */
/* There was an unknown expression (e.g. TypeReferenceExpression) in it */
bool WriteFullTypeName(StringBuilder b, Expression expr)
{
	FieldReferenceExpression fre = expr as FieldReferenceExpression;
	if (fre != null) {
		bool result = WriteFullTypeName(b, fre.TargetObject);
		if (b.Length > 0) b.Append('.');
		b.Append(fre.FieldName);
		return result;
	} else if (expr is IdentifierExpression) {
		b.Append(((IdentifierExpression)expr).Identifier);
		return true;
	} else {
		return false;
	}
}

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

/* START AUTOGENERATED TOKENS SECTION */


/*

*/

	void CS() {

#line  642 "cs.ATG" 
		lexer.NextToken(); /* get the first token */
		compilationUnit = new CompilationUnit(); 
		while (la.kind == 120) {
			UsingDirective();
		}
		while (
#line  646 "cs.ATG" 
IsGlobalAttrTarget()) {
			GlobalAttributeSection();
		}
		while (StartOf(1)) {
			NamespaceMemberDecl();
		}
		Expect(0);
	}

	void UsingDirective() {

#line  653 "cs.ATG" 
		string qualident = null; TypeReference aliasedType = null;
		
		Expect(120);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区成人| 日本高清不卡aⅴ免费网站| 欧美日高清视频| 亚洲国产日韩a在线播放| 欧美午夜宅男影院| 午夜欧美一区二区三区在线播放| 欧美视频你懂的| 美女网站色91| 中文字幕精品综合| 91黄色免费网站| 日本亚洲免费观看| 国产无一区二区| 色猫猫国产区一区二在线视频| 亚洲高清不卡在线| 亚洲精品一区二区在线观看| 国产在线一区二区综合免费视频| 国产精品乱子久久久久| 91国内精品野花午夜精品| 日本不卡视频在线| 国产精品国产a| 欧美三级资源在线| 国产在线不卡视频| 一区二区三区四区在线播放| 日韩午夜在线观看| 91免费版pro下载短视频| 日本va欧美va精品发布| 中文一区二区在线观看| 欧美日韩视频在线观看一区二区三区 | 亚洲欧美一区二区在线观看| 欧美中文字幕一区二区三区 | 亚洲国产aⅴ天堂久久| 欧美成人福利视频| 在线观看免费成人| 国产剧情一区二区| 一区二区三区日韩精品| 久久免费的精品国产v∧| 91九色最新地址| 国产经典欧美精品| 午夜精品福利一区二区三区av| 国产欧美一区二区精品仙草咪| 欧美日本一区二区| caoporen国产精品视频| 麻豆国产精品777777在线| 亚洲激情自拍偷拍| 国产日产欧美一区| 日韩一区二区三区在线视频| 91香蕉视频黄| 高清不卡在线观看av| 蜜臂av日日欢夜夜爽一区| 一区二区三区免费网站| 欧美国产一区二区| 日韩精品一区二区三区视频播放| 欧美日韩精品欧美日韩精品一综合| 日韩欧美国产系列| 在线免费观看成人短视频| 国产久卡久卡久卡久卡视频精品| 亚洲成人av一区| 国产精品入口麻豆九色| 久久综合网色—综合色88| 欧美日韩高清一区二区不卡 | 亚洲va欧美va人人爽午夜| 中文字幕五月欧美| 久久亚洲精品小早川怜子| 日韩欧美激情一区| 3atv一区二区三区| 欧美理论片在线| 在线免费精品视频| 色先锋资源久久综合| 成人高清在线视频| 成人a免费在线看| 成人av动漫在线| a亚洲天堂av| 色香蕉久久蜜桃| 欧美性受xxxx黑人xyx性爽| 不卡一卡二卡三乱码免费网站| 国产激情一区二区三区四区 | 国产盗摄女厕一区二区三区| 狠狠色丁香久久婷婷综合丁香| 美女网站在线免费欧美精品| 免费高清在线视频一区·| 免费视频最近日韩| 久久精品国产亚洲高清剧情介绍| 日韩国产精品久久久| 视频一区二区中文字幕| 免费的成人av| 国产一区美女在线| 成人综合婷婷国产精品久久蜜臀 | 精品污污网站免费看| 欧美日韩综合色| 日韩视频123| 久久这里只有精品首页| 国产亚洲成aⅴ人片在线观看| 国产农村妇女精品| 亚洲欧美日韩国产成人精品影院| 亚洲综合免费观看高清完整版在线 | 成人午夜伦理影院| 91蜜桃在线免费视频| 欧美揉bbbbb揉bbbbb| 日韩一区二区中文字幕| 久久这里只有精品首页| 综合亚洲深深色噜噜狠狠网站| 一区二区在线观看av| 日本麻豆一区二区三区视频| 精品一区二区三区av| 成人性生交大合| 欧美亚洲丝袜传媒另类| 欧美成人精品福利| 中文字幕在线视频一区| 亚洲国产乱码最新视频| 精品亚洲国内自在自线福利| 懂色av一区二区三区蜜臀| 欧美综合在线视频| 日韩精品一区二区三区视频播放 | 99re成人在线| 欧美疯狂性受xxxxx喷水图片| 久久久99久久| 亚洲bt欧美bt精品| 国产盗摄女厕一区二区三区| 欧美午夜精品一区| 久久久高清一区二区三区| 亚洲精品视频在线观看免费| 久久99日本精品| 欧美主播一区二区三区| 国产欧美一区二区精品仙草咪| 亚洲成国产人片在线观看| 国产成人一级电影| 91精品国产美女浴室洗澡无遮挡| 国产精品久久久久永久免费观看 | 欧美一区二区福利在线| 国产精品国产馆在线真实露脸| 奇米综合一区二区三区精品视频| 不卡一区二区中文字幕| 日韩欧美一区电影| 亚洲一区二区精品久久av| 成人免费va视频| 欧美成人女星排名| 午夜av区久久| 91看片淫黄大片一级在线观看| 337p日本欧洲亚洲大胆色噜噜| 亚欧色一区w666天堂| 91丨porny丨最新| 日本一区二区三级电影在线观看 | 精品精品欲导航| 亚洲一区在线播放| 成人高清伦理免费影院在线观看| 日韩精品一区二区三区三区免费| 亚洲成人动漫精品| 在线视频中文字幕一区二区| 亚洲国产精品二十页| 国产在线视频不卡二| 日韩美女视频一区二区在线观看| 偷拍日韩校园综合在线| 欧美亚洲综合一区| 亚洲综合清纯丝袜自拍| 色偷偷成人一区二区三区91| 国产精品久久久久久久午夜片| 国产成人午夜片在线观看高清观看| 日韩视频在线你懂得| 蜜臀av一区二区在线观看 | 国产日韩欧美麻豆| 国产一区美女在线| 欧美精品一区二区久久婷婷| 日韩av在线免费观看不卡| 欧美日韩国产电影| 日韩精品电影一区亚洲| 51精品视频一区二区三区| 亚洲国产日韩在线一区模特| 欧美视频在线一区二区三区 | 国产精品久久久久久久久果冻传媒 | 香蕉影视欧美成人| 欧美高清激情brazzers| 免费看日韩a级影片| 日韩欧美三级在线| 激情深爱一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 国产一区二三区好的| 久久婷婷国产综合国色天香| 国产一区二区久久| 国产精品白丝在线| 日本久久精品电影| 日韩av电影免费观看高清完整版在线观看| 91麻豆精品91久久久久久清纯| 久草这里只有精品视频| 久久久美女艺术照精彩视频福利播放| 国产麻豆一精品一av一免费 | 亚洲成人一区二区在线观看| 宅男在线国产精品| 国产在线播精品第三| 国产精品天天看| 在线一区二区三区四区五区| 日韩激情视频在线观看| 精品国产人成亚洲区| 成人高清视频在线| 香蕉成人伊视频在线观看| 日韩一区二区中文字幕| 成人国产视频在线观看| 香蕉影视欧美成人| 久久免费精品国产久精品久久久久| 成人听书哪个软件好| 亚洲福利视频一区|