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

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

?? detaildesign.txt

?? FinC編譯器源代碼
?? TXT
字號:
FinC 0.3 detail design----------------------Design for Token classClass Token is main for convert source to token.declaration and members:struct TokenEnv{	Bool eof;	Bool replay;	int line;	int position;	FinCTokenType current_token;	String* line_str;	String* last_str;	char last_char;	double last_double;	float last_float;	long last_long;	const char* (*read_line)(char* arg);	const char* arg;};Design for App class(class App will rename to Context for plan thread support in 0.3 version )Context includes some global information for a single script application.such as symbol, global variable table and static variable table.declaration and members:struct FinCApp{	Object parent;	HashTable* hash_global;	HashTable* hash_local;	HashTable* hash_functions;	HashTable* hash_struct;}hash_global, 全局變量hash_local, 局部變量,會隨著每次調用上下文而變動。hash_functions, 函數符號表hash_struct, 結構體符號表Data類設計(0.2版本重點更新項目)Action新建消亡建立引用取消引用調用域成員和其他類的接口FinCData聲明struct FinCData{	Object parent;//引用位	FinCType type//類型	Vector* child;	FinCData* pointer;//當它是指針類型時,只想的實際的FinCData數據變量	ADT raw;	Bool ref;};parent指示出它的引用參考type指示出數據的類型。其中raw為最關鍵的數據區域,每個類型的數據有具體的大小,raw域按大小來分配。ref指示出raw是否是引用方式,如果是引用方式,將沒有權力釋放數據域。child,sub Data矢量表,主要存儲的結構為FinCData,從而實現struct聲明的可遞歸性。由于采用的是vector,所以對域成員的引用采用index的方式。指針的處理:raw:指針只是一個4字節長度(不同的機器可能不一樣,x86為4字節)的數據域,放置實際的數據塊的地址。pointer指向實際的FinCData類型的數據變量。API操作說明FinCData* finc_data_new (FinCType* p_type, ADT p_ref)新建數據,主要是新開辟Type數據類型大小的數據區域。參數:p_type,生成數據塊的數據類型p_ref,是否為引用類型返回:新開辟的數據塊結構void finc_data_destroy (Object* self)銷毀數據參數:self,FinCData本地數據返回:無void finc_data_init_data (ADT self, ADT data)初始化數據參數:self,FinCData本地數據data,數據塊載入點返回:無void finc_data_assign (FinCData* self, FinCData* p_src)賦值(復制)內存區參數:self,FinCData本地數據p_src,復制數據塊的數據源返回:無void finc_data_set_string (FinCData* self, String* p_value)設置字符串類型數據參數:self,FinCData本地數據p_value,需要設置的字符串返回:無String* finc_data_get_string (FinCData* self)獲得字符串類型數據參數:self,FinCData本地數據返回:數據塊中的字符串類型void finc_data_set_data (FinCData* self, ADT p_ptr)設置原始內存區指針參數:self,FinCData本地數據p_ptr,設置數據的數據指針返回:無ADT finc_data_get_data (FinCData* self)獲得原始內存塊參數:self,FinCData本地數據返回:抽象數據類型ADTFinCData* finc_data_convert (FinCData* self, FinCType* p_type)轉換數據類型參數:self,FinCData本地數據p_type,需要轉換的數據類型返回:轉換了的數據結構FinCData* finc_data_get_field (FinCData* self, String* p_name)獲得結構體的域數據參數:self,FinCData本地數據p_name,域成員名字返回:獲得的域數據Type類修正:FinCType包含如下類型FinCType_CharFinCType_ShortFinCType_IntFinCType_FloatFinCType_DoubleFinCType_BoolFinCType_StringFinCType_PointerFinCType_VoidFinCType_StructFinCType_UnsignedFinCTYpe_StaticFinCTYpe_NativeArray類型FinCTypeArray_NoneFinCTypeArray_FixedFinCTypeArray_Dynamicfinc_type_newfinc_type_new_name通過名字獲得類型finc_type_get_sizefinc_type_destroyStruct類設計:struct FinCStruct{	Object parent;	String name;	HashTable hash_field;	int size;};結構成員hash_field采用hash表的方法方法newdestoryadd_fieldget_fieldget_sizeFinCSys系統函數庫FinCSys都具有統一的函數聲明格式void function (FinCNode* p_node)參數:p_node,語法樹結點增加:void finc_sys_pkg (FinCNode* p_node)void finc_sys_struct (FinCNode* p_node)void finc_sys_native_func (FinCNode* p_node)void finc_sys_break (FinCNode* p_node)void finc_sys_continue (FinCNode* p_node)void finc_sys_access (FinCNode* p_node)修正:void finc_sys_cast  (FinCNode* p_node)void finc_sys_global (FinCNode* p_node)void finc_sys_local (FinCNode* p_node)void finc_sys_condition (FinCNode* p_node)void finc_sys_comma (FinCNode* p_node)void finc_sys_content_of (FinCNode* p_node)void finc_sys_addr_of (FinCNode* p_node)void finc_sys_continue (FinCNode* p_node)void finc_sys_break (FinCNode* p_node)Design for Parser classClass Parser is the most important class for 0.2 to 0.3 change.It use a recursive descent parse method to parser FinC source file.However, there are some famous conflict in recursive descent parse,such as left recursion and left gene. In FinC grammar[detail pleasesee FinC grammar spec v0.3], the great conflict is variable declarationand function declaration. There are both some type prefix. So, ifwant to resolve it, can do as normally apart left gene and breakoutleft recursive descent and also can do as look aheard for 1 token.There are only talk about how to resolve the conflict in grammar.conflict:variable declaration , function declarationexample:(map is a struct data type)int a;int a=100, b;static int a;map a;int func();map func();function 'proc_type_prefix' will process the prefix of all declaration,and generate it to two global variable: g_type and g_id.for 'int a;'g_type is 'int' node, g_id is 'a' node.for 'static int a;'g_type is 'static int' node, g_id is 'a' node.fro 'map func()'g_type is 'map' node, g_id is 'func' node.after process prefix, there are some case for follow process.if it's ',' , it's a variable declaration.if it's ';' , it's a variable declaration.if it's '[' , it's a variable declaration, an array variable declaration.if it's '=' , it's a variable declaration.if it's '(' , it's a function declaration.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网友自拍| 自拍偷拍国产亚洲| 精品少妇一区二区三区视频免付费 | 天天影视网天天综合色在线播放| 亚洲地区一二三色| 午夜久久久影院| 日韩国产精品久久久| 久久国产欧美日韩精品| 国产精品白丝av| 在线看日本不卡| 精品成人一区二区三区四区| 久久综合久久综合久久综合| 国产欧美精品一区aⅴ影院 | 国产精品人成在线观看免费| 国产精品人妖ts系列视频| 国产综合色视频| 麻豆精品一区二区三区| 夜夜嗨av一区二区三区中文字幕| 国产精品青草久久| 亚洲欧洲国产日韩| 亚洲国产一区二区三区| 日韩电影在线免费| 国产老妇另类xxxxx| gogogo免费视频观看亚洲一| 91啦中文在线观看| 日韩欧美一二三四区| 欧美激情中文字幕| 五月激情综合色| 国产精品夜夜嗨| 91亚洲精品久久久蜜桃网站 | 国产九九视频一区二区三区| 国产99久久久国产精品免费看 | 精品日韩在线一区| 精品美女在线播放| 亚洲欧美区自拍先锋| 蜜桃视频在线观看一区| 成人黄色777网| 欧美一二三四区在线| 久久久久久久久蜜桃| 一区二区三区欧美日韩| 蜜臀av性久久久久蜜臀av麻豆| 风间由美一区二区av101 | 亚洲最大成人综合| 亚瑟在线精品视频| 91久久久免费一区二区| 久久久久久夜精品精品免费| 欧美mv日韩mv国产网站| 天天操天天综合网| 这里只有精品免费| 亚洲一区影音先锋| 91视频com| 精品国产一区二区三区久久久蜜月| 欧美变态tickle挠乳网站| 一区二区三区在线视频播放| 成人黄色av电影| 日本一区二区高清| www.欧美.com| 精品国产制服丝袜高跟| 性欧美大战久久久久久久久| 91麻豆swag| 国产日韩欧美高清在线| 亚洲一区二区三区四区在线免费观看 | 不卡av在线免费观看| 久久久.com| 色天天综合久久久久综合片| 精品sm捆绑视频| 99国产精品久久久久久久久久久| 亚洲欧洲综合另类| 欧美日韩三级一区二区| 中文一区一区三区高中清不卡| 亚洲成av人片| 日本一区二区三区久久久久久久久不 | 91精品国产91久久久久久最新毛片| 五月天激情综合| 国产性天天综合网| 精品视频在线免费观看| 国产盗摄女厕一区二区三区| 亚洲乱码日产精品bd| 4438x成人网最大色成网站| 成人开心网精品视频| 亚洲精品国产精华液| 制服丝袜亚洲精品中文字幕| 亚洲成av人影院在线观看网| 91麻豆免费在线观看| 韩国av一区二区三区四区| 亚洲午夜久久久久久久久久久| www国产亚洲精品久久麻豆| 欧美日韩在线电影| 午夜欧美电影在线观看| 国产精品视频观看| 久久久91精品国产一区二区三区| 欧美日免费三级在线| jizzjizzjizz欧美| 极品瑜伽女神91| 日韩高清电影一区| 视频一区视频二区中文| 国产精品久久久久久户外露出| 精品国免费一区二区三区| 欧美日韩精品一区二区| 91国内精品野花午夜精品| 93久久精品日日躁夜夜躁欧美| 亚洲国产另类av| 亚洲电影欧美电影有声小说| 一区二区三区不卡在线观看 | 一本到不卡免费一区二区| 国产91富婆露脸刺激对白| 成a人片国产精品| 色偷偷成人一区二区三区91 | 成人欧美一区二区三区| 欧美日韩一区三区四区| 91精品欧美久久久久久动漫 | 亚洲黄色片在线观看| 国产精品乱码人人做人人爱| 国产亚洲精品aa| 国产精品视频一二三| 亚洲黄色在线视频| 五月综合激情网| 国产精品一区二区男女羞羞无遮挡 | 夜夜精品视频一区二区| 天天综合日日夜夜精品| 国产成人亚洲精品青草天美| 成人一区在线看| 欧美日韩在线一区二区| 在线播放欧美女士性生活| 国产亚洲1区2区3区| 亚洲va欧美va国产va天堂影院| 日韩电影在线一区二区三区| 国产成人精品免费视频网站| 91激情五月电影| 在线91免费看| 26uuu久久综合| 日本女优在线视频一区二区| 色94色欧美sute亚洲线路一久| 精品视频一区二区三区免费| 亚洲精品水蜜桃| 国产成人精品免费视频网站| 91精品国产91久久久久久一区二区 | 亚洲成av人在线观看| 99久久99久久精品国产片果冻| 欧美丰满一区二区免费视频| 亚洲国产美女搞黄色| 91黄视频在线观看| 一区二区三区产品免费精品久久75 | 亚洲欧洲精品成人久久奇米网| 日本成人在线电影网| 欧美揉bbbbb揉bbbbb| 亚洲欧美综合另类在线卡通| 国产精品99久久不卡二区| 3d成人动漫网站| 亚洲电影视频在线| 精品在线观看免费| 久久久久久久性| 一区二区三区在线观看欧美 | 91蝌蚪porny九色| 1000部国产精品成人观看| a亚洲天堂av| 青青草原综合久久大伊人精品优势 | 亚洲女子a中天字幕| 91精彩视频在线| 麻豆精品一区二区三区| 中文无字幕一区二区三区| 在线观看视频一区| 狠狠狠色丁香婷婷综合激情| 国产精品少妇自拍| 欧美大片免费久久精品三p| 不卡视频在线看| 国产成人自拍网| 亚洲一区日韩精品中文字幕| 久久亚洲私人国产精品va媚药| 一本色道久久综合亚洲91| 久久电影网站中文字幕| 精品嫩草影院久久| 91国偷自产一区二区三区成为亚洲经典 | 国产精品久久久久久久久动漫| 欧美日本在线视频| 91免费视频大全| av在线不卡网| 国产mv日韩mv欧美| 国产美女精品人人做人人爽| 午夜精品一区二区三区三上悠亚| 国产人成亚洲第一网站在线播放| 日韩欧美不卡在线观看视频| 色综合天天综合网国产成人综合天| 国产自产视频一区二区三区| 午夜一区二区三区在线观看| 亚洲人123区| 亚洲精品乱码久久久久久久久 | 在线日韩一区二区| aaa亚洲精品一二三区| 国产99久久久久久免费看农村| 免费欧美日韩国产三级电影| 秋霞午夜鲁丝一区二区老狼| 婷婷成人综合网| 一区二区三区免费| 亚洲一区二区三区四区在线观看 | 另类中文字幕网| 免费在线看成人av| 久久国产视频网| 日韩国产一区二| 亚洲国产视频a|