青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

【ZT】D語言詞法分析(1)

在D中,詞法分析獨立于語法分析和語義分析。詞法分析器將源文件分割成記號。詞法描述了如何識別記號。D的詞法被設計為適于高速掃描,它擁有最小的特殊規則集合,只有一遍翻譯,這使得構造一個正確的掃描程序很容易。對于熟悉 C 和 C++ 的人來說,記號也很容易識別。

編譯的階段

編譯被分為多個階段。每個階段都不依賴于后繼的階段。例如,掃描程序不依賴于語義分析程序。這種分離使語法制導編輯器等語言工具相對容易構造。這也使通過將其存儲為‘符號’形式來壓縮 D 源碼成為可能。

  1. 源碼字符集
    先檢查源文件使用的是什么字符集,然后使用合適的掃描程序。可以使用 ASCII 或 UTF 格式。
  2. 詞法分析
    源文件被分割為記號序列。特殊記號會被處理,然后刪除。
  3. 語法分析
    符號序列被解析為語法樹。
  4. 語義分析
    遍歷語法樹,聲明變量、載入符號表、分配型別并從大體上決定程序的意義。
  5. 優化
    優化是可選的一步,它試圖語義等價的重寫程序,但是生成一個更為快速的版本。
  6. 代碼生成
    采用目標架構的指令來實現程序的語義。典型的結果是生成一個目標文件,它會作為連接器的輸入。

源碼文本

D 源碼文本可以是下面各種形式之一:

  • ASCII
  • UTF-8
  • UTF-16BE
  • UTF-16LE
  • UTF-32BE
  • UTF-32LE

UTF-8 是傳統的7位 ASCII 的超集。 源代碼文檔的開始可以是下面的任一個 UTF BOMs(字節序標志)之一:

格式 BOM
UTF-8 EF BB BF
UTF-16BE FE FF
UTF-16LE FF FE
UTF-32BE 00 00 FE FF
UTF-32LE FF FE 00 00
ASCII no BOM

D 中沒有“雙連符”或者“三連符” 。 (譯注:三連符是一些由 ?? 開頭的連續的三字符組合,它包括 ??=,??/,??',??(,??),??!,??<,??>和??-,這些字符將被直接替換為對應的字符,分別為#,,^,[,], |,{,}和~。引入三連符是為了方便的輸入這些字符,早期有些鍵盤不支持它們。雙連符同理。顯然 Walter 認為這些東西早就過時了。)

源代碼文檔由 空白、行尾、注釋、特殊記號序列、記號等組成,結尾處必須是 文件尾 。

應使用貪心算法將源代碼文檔分割為記號,也就是詞法分析器每次都試圖生成一個最長的符號。例如:>> 是一個右移運算符,而不是兩個大于運算符。

文件尾

	文件尾:		文件的物理結尾		\u0000		\u001A	
	EndOfFile:		physical end of the file	\u0000		\u001A	

在遇到上述之一時認為文件終止。

行尾

	行尾:		\u000D		\u000A		\u000D \u000A		文件尾	
	EndOfLine:	\u000D		\u000A		\u000D \u000A		EndOfFile	

不允許用反斜線來將一行分為多行,行長度也沒有限制。

空白

	空白:		空格		空格 空白	空格:		\u0020	\u0009	\u000B	\u000C	行尾		注釋	
	WhiteSpace:	Space		Space WhiteSpace	Space:	\u0020	\u0009	\u000B	\u000C	EndOfLine	Comment	

空白被定義為一系列的一個或多個空格、制表符、垂直制表符、表格填充、行尾或者注釋。

注釋

	注釋:		/* 字符 */		// 字符 行尾		/+ 字符 +/	
	Comment:	/* Characters */	// Characters EndOfLine	/+ Characters +/	

D 有三種注釋:

  1. 塊注釋可以跨越多行,但是不能嵌套。
  2. 單行注釋在行尾結束。
  3. 嵌套注釋可以跨越多行并且可以嵌套。

從概念上來說,在記號化之前處理注釋。這意味著嵌入的字符串和注釋不會影響對注釋開始和注釋結束的識別:

	a = /+ // +/ 1;		// 解析為 'a = 1;'	
	a = /+ "+/" +/ 1";		// 解析為 'a = " +/1";'	
	a = /+ /* +/ */ 3;		// 解析為 'a = */ 3;'	

注釋不能被用作記號連接符,例如 abc/**/def 是兩個符號,abcdef ,而不是記號 abcdef

記號

	記號:	標志符	字符串文字量	字符文字量	整數文字量	浮點數文字量	關鍵字		
	Token:	Identifier	StringLiteral	CharacterLiteral	IntegerLiteral	FloatLiteral	Keyword	
	/	/=	.	..	...	&	&=	&&	|	|=	||	-	-=	--	+
	+=	++	<	<=	<<	<<=	<>	<>=	>	>=	>>=	>>>=	>>	>>>	!
	!=	!==	!<>	!<>=	!<	!<=	!>	!>=	(	)	[	]	{	}	?
	,	;	:	$	=	==	===	*	*=	%	%=	^	^=	~	~=
		

標志符

	標志符:		標志符起始	標志符起始 多個標志符字符		多個標志符字符:	標志符字符	標志符字符 多個標志符字符	
	Identifier:	IdentiferStart	IdentiferStart IdentifierChars	IdentifierChars:	IdentiferChar	IdentiferChar IdentifierChars	
	標志符起始:	_	字母	通用字母		標志符字符:	標志符起始	數字
	IdentifierStart:	_	Letter	UniversalAlpha	IdentifierChar:	IdentiferStart	Digit	

標志符由一個字母、下劃線或者一個 unicode 字母開頭,后面跟著任意個字母、下劃線、數字或者通用字母。通用字母的定義請參考 ISO/IEC 9899:1999(E) 附錄 D 。(這是 C99 標準) 標志符長度任意,并且區分大小寫。以兩個下劃線開頭的標志符是保留的。

posted on 2007-09-13 19:51 lovedday 閱讀(451) 評論(0)  編輯 收藏 引用 所屬分類: ▲ D Program

公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            羞羞色国产精品| 欧美色另类天堂2015| 欧美激情1区2区| 裸体歌舞表演一区二区| 久久久国产一区二区| 老巨人导航500精品| 久久久精品国产免费观看同学 | 亚洲无限av看| 午夜日韩av| 久久在线播放| 亚洲精选视频在线| 欧美一级在线视频| 欧美国产在线电影| 国产精品一区二区久久久| 在线精品视频一区二区| 亚洲美女性视频| 午夜一区不卡| 亚洲黄色精品| 亚洲一区在线直播| 欧美va天堂| 国产亚洲欧美日韩日本| 日韩亚洲国产精品| 久久黄金**| 亚洲精品国久久99热| 久久成人精品| 国产精品入口夜色视频大尺度 | 久久久中精品2020中文| 欧美日韩精品二区| 亚洲高清久久| 欧美一区二区黄色| 欧美激情一区二区三区成人| 亚洲欧美成人| 欧美日韩第一区| 在线欧美日韩| 久久精品国产亚洲精品| 在线亚洲观看| 欧美国产一区二区在线观看| 国产日韩欧美夫妻视频在线观看| 亚洲精品亚洲人成人网| 久久夜色精品国产欧美乱| 亚洲第一久久影院| 亚洲欧美欧美一区二区三区| 亚洲夫妻自拍| 久久久人成影片一区二区三区| 国产精品久久久久久久久果冻传媒| 亚洲电影有码| 久久久夜夜夜| 亚洲永久在线观看| 国产精品扒开腿做爽爽爽视频| 夜夜嗨av色综合久久久综合网| 欧美国产乱视频| 久久精品视频一| 国产在线视频欧美一区二区三区| 欧美在线视频观看免费网站| 亚洲一区二区三区免费在线观看| 欧美日韩高清在线| 99这里有精品| 日韩香蕉视频| 欧美日韩另类一区| 中日韩视频在线观看| 日韩视频免费大全中文字幕| 欧美精品一区在线| 99天天综合性| 日韩午夜av电影| 国产精品盗摄久久久| 亚洲一级免费视频| 亚洲午夜精品在线| 国产农村妇女精品一区二区| 久久精品99国产精品酒店日本| 欧美影视一区| 亚洲国产精品成人精品| 欧美激情欧美激情在线五月| 欧美高清在线一区二区| 99re6热只有精品免费观看| 亚洲三级性片| 国产精品视频1区| 麻豆国产精品一区二区三区 | 亚洲视频大全| 亚洲永久视频| 亚洲国产成人精品久久| 亚洲日本一区二区| 国产精品99免视看9| 欧美在线观看一二区| 久久久最新网址| 99re这里只有精品6| 亚洲午夜一区| 在线电影一区| 一本色道久久综合亚洲精品按摩 | 欧美诱惑福利视频| 亚洲人成7777| 亚洲一区二区三区免费视频| 好吊色欧美一区二区三区视频| 亚洲国产裸拍裸体视频在线观看乱了 | 一区二区激情| 一区二区欧美精品| 狠狠色丁香久久婷婷综合丁香| 亚洲国产精品ⅴa在线观看| 国产精品久久久久久妇女6080 | 欧美日韩亚洲一区二区三区| 久久精品30| 欧美午夜片在线观看| 欧美成人午夜视频| 国产色产综合产在线视频| 亚洲精品之草原avav久久| 国内精品一区二区三区| 一区二区三区鲁丝不卡| 亚洲国产精品成人| 先锋影音国产一区| 亚洲视频播放| 欧美成人国产| 久久精品噜噜噜成人av农村| 欧美日韩二区三区| 欧美国产乱视频| 娇妻被交换粗又大又硬视频欧美| 亚洲视频欧洲视频| 亚洲精品一区二区在线| 欧美一区2区三区4区公司二百| 亚洲午夜精品久久| 欧美日韩国产页| 亚洲国产成人porn| 在线成人av.com| 欧美中文在线观看国产| 性欧美超级视频| 国产精品久久久久久久久婷婷| 亚洲国产精品www| 亚洲激情一区二区三区| 久久综合网络一区二区| 久久婷婷激情| 狠狠久久亚洲欧美| 欧美影院视频| 久久久777| 国产亚洲日本欧美韩国| 欧美中文字幕| 久久在线观看视频| 在线免费观看日本欧美| 快播亚洲色图| 亚洲国产高清一区| 日韩视频在线永久播放| 欧美精品一区三区在线观看| 99精品久久久| 亚洲欧美一区二区激情| 国产精品美女主播在线观看纯欲| 亚洲视频每日更新| 久久国产成人| 精品福利免费观看| 欧美sm视频| 夜夜嗨网站十八久久| 欧美淫片网站| 亚洲国产精品第一区二区三区| 奶水喷射视频一区| 亚洲精品一区二区在线观看| 亚洲欧美日韩精品久久久久| 国产九九精品| 免费看的黄色欧美网站| 日韩视频在线永久播放| 欧美一级在线亚洲天堂| 狠狠色丁香久久综合频道| 欧美不卡一区| 亚洲午夜激情网页| 亚洲精品国产精品国自产在线| 免费视频亚洲| 亚洲一区制服诱惑| 免费日韩成人| 亚洲香蕉网站| 在线观看久久av| 国产精品国产三级国产aⅴ无密码| 午夜精品视频在线观看| 欧美福利专区| 欧美亚洲在线观看| 亚洲欧洲视频在线| 国产精品区二区三区日本| 久久蜜臀精品av| 在线亚洲欧美视频| 欧美国产日韩一二三区| 先锋影音网一区二区| 亚洲精品免费观看| 国产亚洲成av人片在线观看桃| 欧美大片免费观看| 欧美伊人久久| 一本久道久久综合婷婷鲸鱼| 美女主播视频一区| 午夜精品免费在线| 一区二区毛片| 亚洲国产欧美久久| 国产视频一区在线观看一区免费| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲女人天堂成人av在线| 亚洲第一页自拍| 国产欧美一区二区三区久久人妖| 欧美 日韩 国产精品免费观看| 午夜精品福利视频| 在线视频精品一| 最新成人av在线| 欧美激情一级片一区二区| 欧美一级一区| 性欧美8khd高清极品| 亚洲欧美成人精品| 亚洲一区二区视频| 99精品福利视频| 亚洲国产日韩综合一区|