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

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

?? scaner.cpp

?? 相當于一個C語言的編譯器
?? CPP
字號:
// scaner.cpp : implementation file
//

#include "stdafx.h"
#include "cminus.h"
#include "scaner.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CString ReservedKeywordList[] =
{
	"auto", "double", "int", "struct",
	"break", "else", "long", "switch",
	"case", "enum", "register", "typedef", 
	"char", "extern", "return", "union",
	"const", "float", "short", "unsigned",
	"continue", "for", "signed", "void",
	"default", "goto", "sizeof", "volatile",
	"do", "if", "static", "while",
	"read", "write", "printf",

	// operations
	"=", "+", "-", "*", "/", "%", "&", "|", "~", "!", "<", ">",
	
	// interpunctions
	"(", ")", "{", "}", "[", "]", ",", ".", ";", ":"
};

/*  *    CScaner
    *    Construction & destruction
  *	* *
   ***   Programer: 陸曉春
    *    Date:		2004.05.17             */

CScaner::CScaner( CString& str ) : CTokenizer( str )
{
	m_bPushedBack = FALSE;
	m_bTrace = FALSE;
	m_token.type = _ID;

	MapKeyword();
}

CScaner::~CScaner()
{
	if( m_fTraceFile.m_hFile != CFile::hFileNull )
		m_fTraceFile.Close();
}

/*  *    CScaner
    *    public functions
  *	* *
   ***   Programer: 陸曉春
    *    Date:		2004.05.17             */

// map keyword to TokenType
void CScaner::MapKeyword()
{
	m_KeyIndex.RemoveAll();
	m_KeyIndex.InitHashTable( MAX_KW );

	for( int i = 0; i < sizeof(ReservedKeywordList) / sizeof(*ReservedKeywordList); i++ )
		m_KeyIndex[ ReservedKeywordList[i] ] = (enum TokenType)i;
}

// trace function
void CScaner::Trace( LPCTSTR lpszPathname )
{
	ASSERT( m_fTraceFile.m_hFile == CFile::hFileNull );

	CFileException e;
	if( !m_fTraceFile.Open( lpszPathname, CFile::modeCreate | CFile::modeReadWrite, &e ) ) {
		OutputErrMsg( "failed to create scaner trace file: %s", lpszPathname );
		return;
	}

	m_bTrace = TRUE;
}

void CScaner::Flush()
{
	if( m_fTraceFile.m_hFile == CFile::hFileNull ) return;
	m_fTraceFile.Flush();
}

// get the next token
TOKEN& CScaner::NextToken()
{
	if( m_bPushedBack ) {
		m_bPushedBack = FALSE;
		return m_token;
	}
	if( m_token.type == _EOF ) return m_token;

	enum TokenType type;
	int val = CTokenizer::NextToken();
	int	lineno = LineNo();// the actual line the token is got from
	
	m_token.type = _ERROR;
	m_token.str = "error";

	if( val == TT_EOF ) {
		m_token.type = _EOF;
		m_token.str = "EOF";
		return m_token;
	}

	if( val == TT_WORD ) {
		if( m_KeyIndex.Lookup( m_sVal, type ) )
			m_token.type = type;
		else 
			m_token.type = _ID;
		m_token.str = m_sVal;
	} else if( val == TT_INTEGER || val == TT_REAL ) {
		m_token.type = _NUM;
		m_token.str = GetStrValue();
	} else if( val == TT_STRING ) {
		m_token.type = _STRING;
		m_token.str = m_sVal;
	} else if( val == TT_CHAR ) {
		m_token.type = _CHARACTER;
		m_token.str = (m_sVal.IsEmpty()) ? " " : CString( m_sVal[0] );
	} else if( val == TT_EOL ) {
		return NextToken();
	} else if( ::strchr( "=+-*/&|~!<>(){}[],.;:", val ) ) {
		m_token.str = (TCHAR)val;
		m_token.type = m_KeyIndex[ m_token.str ];

		// complex operations
		switch( val ) {
		case '=':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = "==";
				m_token.type = EQ;
			} else
				CTokenizer::PushBack();
			break;
		case '!':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = "!=";
				m_token.type = NEQ;
			} else
				CTokenizer::PushBack();
			break;
		case '+':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = "+=";
				m_token.type = PLUS_ASSIGN;
			} else {
				CTokenizer::PushBack();
				if( CTokenizer::NextToken() == '+' ) {
					m_token.str = "++";
					m_token.type = PLUS_PLUS;
				} else
					CTokenizer::PushBack();
			}
			break;
		case '-':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = "-=";
				m_token.type = MINUS_ASSIGN;
			} else {
				CTokenizer::PushBack();
				if( CTokenizer::NextToken() == '-' ) {
					m_token.str = "--";
					m_token.type = MINUS_MINUS;
				} else
					CTokenizer::PushBack();
			}
			break;
		case '*':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = "*=";
				m_token.type = TIMES_ASSIGN;
			} else
				CTokenizer::PushBack();
			break;
		case '/':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = "/=";
				m_token.type = DIV_ASSIGN;
			} else
				CTokenizer::PushBack();
			break;
		case '<':
			if( CTokenizer::NextToken() == '>' ) {
				m_token.str = "<>";
				m_token.type = NEQ;
			} else {
				CTokenizer::PushBack();
				if( CTokenizer::NextToken() == '=' ) {
					m_token.str = "<=";
					m_token.type = NGT;
				} else
					CTokenizer::PushBack();
			}
			break;
		case '>':
			if( CTokenizer::NextToken() == '=' ) {
				m_token.str = ">=";
				m_token.type = NLT;
			} else
				CTokenizer::PushBack();
			break;
		case '&':
			if( CTokenizer::NextToken() == '&' ) {
				m_token.str = "&&";
				m_token.type = LOGICAL_AND;
			} else
				CTokenizer::PushBack();
			break;
		case '|':
			if( CTokenizer::NextToken() == '|' ) {
				m_token.str = "||";
				m_token.type = LOGICAL_OR;
			} else
				CTokenizer::PushBack();
			break;
		}
	} else
		OutputErrMsg( "error in line %d: syntax error '%c'", LineNo(), (char)val );

	if( m_bTrace ) {
		CString temp;
		temp.Format( "line:%3d   Token Code: %.2d  %s\r\n", lineno, m_token.type, (LPCTSTR)m_token.str );
		try {
			m_fTraceFile.Write( (LPCTSTR)temp, temp.GetLength() );
		} catch( CFileException* ) {
			OutputErrMsg( "failed to write to file: %s", (LPCTSTR)m_fTraceFile.GetFilePath() );
		}
	}

	return m_token;
}

void CScaner::PushBack()
{
	m_bPushedBack = TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91一区二区三区在线播放| 国内精品久久久久影院色| 精品美女一区二区| 91精品福利在线| 国产999精品久久久久久绿帽| 亚洲福利一区二区三区| 国产精品麻豆久久久| 欧美一区2区视频在线观看| 91小视频在线观看| 国产福利一区二区| 久久精品国产亚洲5555| 夜夜嗨av一区二区三区| 国产精品女主播在线观看| 日韩免费电影一区| 欧美高清精品3d| 欧美在线视频全部完| 99久久99久久精品免费看蜜桃| 国产在线看一区| 毛片av一区二区| 日韩中文字幕一区二区三区| 亚洲美女淫视频| 中文字幕一区二区三区四区 | 日韩电影在线免费看| 国产精品第一页第二页第三页| 日韩三级电影网址| 欧美另类久久久品| 欧美精选午夜久久久乱码6080| 色婷婷综合激情| 一本高清dvd不卡在线观看| 国产aⅴ综合色| 国产精品一区二区久久不卡| 国产一区二区三区免费| 精品一区二区三区的国产在线播放| 日韩电影在线免费观看| 亚洲大片一区二区三区| 亚洲第一av色| 污片在线观看一区二区| 午夜婷婷国产麻豆精品| 午夜精品福利一区二区三区av | 99re成人在线| 99国产精品国产精品久久| 成人av电影在线观看| 99riav久久精品riav| 97se亚洲国产综合自在线| 成人av网站在线观看| 国产69精品久久99不卡| 成人看片黄a免费看在线| 成人性视频免费网站| 欧美日本一区二区在线观看| 成人午夜在线视频| 99精品欧美一区二区三区小说| 99国产欧美另类久久久精品| 在线精品视频免费播放| 欧美三级中文字幕| 日韩欧美国产三级电影视频| 久久久久高清精品| 亚洲天堂精品在线观看| 亚洲一区二区三区四区在线免费观看 | 国产精品素人视频| 亚洲免费电影在线| 欧美aaa在线| 国产成人aaa| 欧美色网站导航| 日韩精品在线网站| 国产精品网友自拍| 亚洲成人av电影在线| 奇米影视一区二区三区小说| 国产高清亚洲一区| 欧美亚洲图片小说| 精品欧美久久久| 亚洲色图制服诱惑 | 久久精品欧美一区二区三区不卡| 亚洲欧洲av一区二区三区久久| 亚洲午夜私人影院| 国内国产精品久久| 色综合中文综合网| 国产日韩精品一区二区三区| 中文字幕在线视频一区| 亚洲成人久久影院| 国产福利一区在线| 欧美三级电影网| 国产欧美日韩在线观看| 一区二区三区中文字幕| 美女www一区二区| heyzo一本久久综合| 欧美人xxxx| 国产精品欧美久久久久一区二区 | 精品在线视频一区| 91网站在线播放| 日韩女同互慰一区二区| 亚洲天堂久久久久久久| 国模冰冰炮一区二区| 欧美在线你懂的| 国产欧美日韩不卡免费| 日本欧美在线观看| 色老头久久综合| 久久久亚洲高清| 亚洲成人777| 91色综合久久久久婷婷| 欧美精品一区二区三区四区| 一区二区三区高清| 东方欧美亚洲色图在线| 精品少妇一区二区三区在线视频| 亚洲精品第一国产综合野| 国产一区二区三区最好精华液| 欧美色精品天天在线观看视频| 国产精品美女久久久久久| 激情五月婷婷综合网| 欧美日韩国产综合草草| 亚洲欧洲精品天堂一级| 韩国av一区二区三区四区 | 亚洲同性gay激情无套| 国产综合色精品一区二区三区| 欧美日韩极品在线观看一区| 亚洲精品伦理在线| 成人污污视频在线观看| 久久亚洲私人国产精品va媚药| 日韩av网站在线观看| 欧美欧美午夜aⅴ在线观看| 亚洲欧美日韩小说| www.亚洲精品| 国产精品美女久久久久久久网站| 国产高清精品久久久久| 亚洲精品一区二区三区蜜桃下载| 奇米精品一区二区三区在线观看一| 欧美在线不卡一区| 一级中文字幕一区二区| 色综合中文字幕国产| 欧美国产日韩一二三区| 国产成人精品三级| 国产亚洲一区二区三区在线观看| 狠狠色狠狠色合久久伊人| 日韩美女在线视频| 国产一区欧美二区| 久久久av毛片精品| 国产成人午夜精品5599| 久久久久久亚洲综合影院红桃| 国产一级精品在线| 国产欧美日韩另类一区| av亚洲精华国产精华精华| 亚洲人成在线观看一区二区| 色激情天天射综合网| 亚洲成人av电影| 日韩欧美国产综合在线一区二区三区 | 亚洲第一福利一区| 91精品国产aⅴ一区二区| 日韩福利视频导航| 精品久久免费看| 久久影院午夜论| 男人的j进女人的j一区| 精品国产1区2区3区| 国产黑丝在线一区二区三区| 亚洲图片激情小说| 欧美日韩精品欧美日韩精品| 久久国产尿小便嘘嘘| 国产女人18水真多18精品一级做| 成人av电影免费在线播放| 亚洲精品高清在线| 日韩欧美亚洲一区二区| 高清久久久久久| 亚洲国产精品久久久久秋霞影院 | 久久久久久久久一| 国精产品一区一区三区mba视频| 国产精品进线69影院| 欧美在线观看视频一区二区三区| 日本在线不卡一区| 久久久久成人黄色影片| 欧日韩精品视频| 久久精品国产一区二区三区免费看| 欧美激情在线看| 欧美老肥妇做.爰bbww视频| 精品在线免费观看| 亚洲欧洲无码一区二区三区| 欧美吻胸吃奶大尺度电影 | 亚洲一卡二卡三卡四卡无卡久久| 337p亚洲精品色噜噜| 国产成人免费视频一区| 亚洲一区二区av电影| 精品国产乱子伦一区| 91亚洲大成网污www| 久久97超碰国产精品超碰| 1024成人网色www| 67194成人在线观看| www.欧美亚洲| 热久久免费视频| 亚洲欧美日韩国产成人精品影院| 日韩一区二区三| 日本二三区不卡| 国产一区二区久久| 午夜精品福利一区二区三区蜜桃| 国产欧美日韩视频一区二区| 777午夜精品免费视频| av亚洲产国偷v产偷v自拍| 日本不卡免费在线视频| 亚洲丝袜自拍清纯另类| 久久综合久久综合亚洲| 91精品国产综合久久久久久久| av电影在线观看一区| 国产成人综合在线| 裸体歌舞表演一区二区|