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

天行健 君子當自強而不息

【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>
            久久夜色精品国产亚洲aⅴ| 国产女同一区二区| 99re6热只有精品免费观看 | 国产欧美 在线欧美| 欧美影院成年免费版| av成人免费| 99re66热这里只有精品4| 久久在线精品| 一卡二卡3卡四卡高清精品视频| 国产精品一区二区女厕厕| 欧美精品一区二区三区一线天视频 | 最新日韩在线视频| 亚洲国产精品成人精品| 一本综合久久| 亚洲欧洲一区二区在线播放| 亚洲视频一区在线| 亚洲一区精彩视频| 久久久精品网| 欧美成va人片在线观看| 欧美激情91| 亚洲精品之草原avav久久| 日韩午夜剧场| 欧美在线你懂的| 欧美片在线观看| 国产精品久久久久一区二区三区 | 久久久久久久网| 欧美va天堂在线| 一区二区国产日产| 久久精品91| 欧美日韩在线视频一区二区| 国产精品免费网站| 亚洲日产国产精品| 欧美一区二区视频在线观看2020 | 久久综合狠狠综合久久激情| 欧美日韩国产欧| 亚洲女爱视频在线| 欧美a级一区二区| 国产美女精品一区二区三区| 亚洲最新色图| 亚洲人成高清| 亚洲免费中文| 午夜精品久久久久久久久久久久| 另类综合日韩欧美亚洲| 亚洲无人区一区| 欧美gay视频| 亚洲一区二区三区四区中文| 欧美伊久线香蕉线新在线| 欧美日韩国产首页| 亚洲少妇自拍| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美日韩国产精品一卡| 亚洲精品资源美女情侣酒店| 欧美激情亚洲国产| 蜜臀久久久99精品久久久久久 | 欧美日韩精品不卡| 99精品久久| 午夜精品免费在线| 欧美日韩国产123区| 性欧美大战久久久久久久久| 欧美一区二区三区四区在线观看| 国产亚洲精品aa午夜观看| 久久久久久亚洲精品不卡4k岛国| 日韩午夜在线| 国产亚洲人成网站在线观看| 麻豆亚洲精品| 欧美日韩色一区| 久久久久国产精品厨房| 欧美精品在线免费| 欧美专区第一页| 欧美久久电影| 久久一区欧美| 国产视频在线观看一区二区| 欧美国产日韩亚洲一区| 国产精品自拍在线| 亚洲激情av| 亚洲国产婷婷| 久久久精品免费视频| 欧美精选在线| 亚洲国产日韩在线一区模特| 狠狠色综合一区二区| 亚洲欧美影院| 久久精彩视频| 国产一区二区精品在线观看| 亚洲高清在线播放| 欧美日韩一级视频| 亚洲精品视频二区| 99精品热视频| 国产精品xnxxcom| 亚洲一区在线播放| 欧美一二三视频| 国产自产2019最新不卡| 久久精品91久久香蕉加勒比| 久久婷婷国产综合国色天香| 黄色精品一区二区| 乱码第一页成人| 亚洲精品色婷婷福利天堂| 香蕉久久夜色精品国产| 欧美日韩国产黄| 久久久精品日韩| 激情综合在线| 欧美国产视频一区二区| 在线成人欧美| 欧美激情一二三区| 欧美一区二区啪啪| 亚洲福利在线观看| 性欧美超级视频| 亚洲精一区二区三区| 国产亚洲欧美激情| 欧美久久久久久久久| 亚洲免费观看高清完整版在线观看| 欧美一区二区在线免费观看| 欧美国产第二页| 亚洲欧美日韩综合一区| 亚洲伊人网站| 亚洲国产91精品在线观看| 亚洲美女黄网| 在线免费观看日本欧美| 一区二区三区日韩在线观看| 娇妻被交换粗又大又硬视频欧美| 亚洲精品一区二区三区蜜桃久| 国产亚洲精品福利| 一本大道久久a久久综合婷婷| 香蕉尹人综合在线观看| 最新69国产成人精品视频免费 | 欧美在线高清| 欧美日韩理论| 91久久精品国产91久久性色| 国产日韩欧美三区| 亚洲视频精选| 亚洲欧美一区二区在线观看| 欧美日韩国产色综合一二三四 | 欧美日韩国产成人精品| 欧美国产第二页| 亚洲第一级黄色片| 久久久999精品免费| 久久精品人人做人人综合| 国产精品日韩精品欧美精品| av72成人在线| 午夜激情久久久| 国产精品无人区| 亚洲一区二区三区四区五区午夜| 亚洲午夜精品一区二区| 欧美三日本三级少妇三99| 99综合电影在线视频| 一区二区三区毛片| 欧美四级伦理在线| 亚洲欧美国产高清va在线播| 欧美在线电影| 狠狠色综合网| 欧美激情二区三区| 亚洲美女精品久久| 亚洲影院在线| 国产曰批免费观看久久久| 久久一综合视频| 亚洲黄色免费电影| 亚洲一区二区伦理| 国产亚洲福利社区一区| 久久亚洲国产精品日日av夜夜| 亚洲第一精品福利| 99热精品在线观看| 国产精品欧美日韩久久| 久久gogo国模裸体人体| 亚洲电影免费| 性欧美videos另类喷潮| 影音先锋在线一区| 欧美日韩在线播放一区| 欧美一区二区免费观在线| 亚洲国产福利在线| 久久aⅴ国产欧美74aaa| 99精品欧美一区二区三区| 国产欧美韩日| 欧美激情一区二区三区在线| 亚洲免费在线视频一区 二区| 免费在线成人av| 亚洲专区在线| 亚洲国产高清自拍| 亚洲欧美日韩一区二区| 亚洲大胆av| 久久久久国色av免费看影院 | 激情小说另类小说亚洲欧美 | 久久亚洲精品视频| 在线亚洲美日韩| 免费久久精品视频| 午夜精品免费在线| 亚洲茄子视频| 韩日精品中文字幕| 欧美午夜宅男影院| 欧美freesex8一10精品| 欧美亚洲在线播放| 亚洲精品一二三| 欧美大片免费观看| 久久久av网站| 亚洲欧美一区二区在线观看| 日韩亚洲精品在线| 亚洲国产精品va在线看黑人| 国产一区二区精品久久99| 国产精品久久国产愉拍| 欧美精品在线网站| 蜜臀a∨国产成人精品| 久久精品九九|