最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

enum is a Dictionary - view from GDScriptParser

2023-02-03 20:44 作者:緊果唄  | 我要投稿

?????? enum is a Dictionary

  • - [GraphViz](http://www.graphviz.org/Download.php)

  • - [CodeViz](http://www.csn.ul.ie/~mel/projects/codeviz/)

  • - [GDScript progress report: Writing a tokenizer](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer/)

CodeViz 是 Understanding The Linux Virtual Memory Manager 一書的作者 Mel Gorman 編寫的一款分析 C/C++ 源代碼中函數(shù)調(diào)用關(guān)系的開源工具,類似軟件有 egypt、ncc 等。在編譯源文件時,它會導(dǎo)出其中函數(shù)的 call graph,然后用 Perl 腳本收集并整理調(diào)用關(guān)系,轉(zhuǎn)交給 Graphviz 繪制圖形。

CodeViz 現(xiàn)在已經(jīng)基本支持 C++ 語言,最新的 1.0.9 版能在 Windows + Cygwin 下順利地編譯使用。


Godot 中的枚舉類型 enum 和字典對象同源,可以使用 keys() 方法獲取枚舉量的名稱來實現(xiàn)到字符串的轉(zhuǎn)換。參考 global_constants.cpp 源代碼文件,其中注冊了全局類型常量。GDScript 解釋器也沒有專門設(shè)置一個Token 用于表示枚舉類型,而是和字典類型一樣,直接通過檢測代碼中的花括號來識別枚舉類型。


Godot 3.5 中的 GDScript 解析器定義了一個 parse_class 方法,它包攬了腳本的解析工作,整個方法非常臃腫。Godot 4.x 后,重新編寫了解析器,這個方法也被拆解成各個分工方法。


GDScriptTokenizer 定義了腳本中的 `Token` 類型,名字中的科室符號含義如下:

  • - TK 前綴簡寫為 Token;

  • - OP 表示 Operation code 操作碼;

  • - CF 表示 Control flow 流程控制;

  • - PR 表示 Keywords,可能是縮寫 Propose,但絕不 GitHub 中 PR(pull request);

Godot 3.5 Token 類定義如下,其中 TK_PR_SLAVE 由 TK_PR_PUPPET 取代,TK_CURSOR 用自動完成功能,可以看到 ++ 或 -- 這樣的運算符號還未提供實現(xiàn),共有 99 個 Token:

Godot 4.x 引入的多個關(guān)鍵字,或關(guān)鍵字功能的提升:

  • - in 作為關(guān)鍵字定義,對應(yīng)舊版本的 TK_OP_IN,用于決斷元素是否在 string, list, range, 字典或者節(jié)點中,也用于 for 循環(huán);

  • - super 用于調(diào)用父類構(gòu)造函數(shù)或成員,不用像舊版本中那樣使用 . 運算符號來調(diào)用父類;

  • - await 替代舊版本的 TK_PR_YIELD,雖然 yield 這個關(guān)鍵字還在,但使用它只會得到錯誤提示;

  • - tool、icon、onready、export 等等變更為標注,由 GDScriptParser 提供實現(xiàn),不同作為關(guān)鍵字使用;

  • - @warning_ignore 和 @rpc 是新增的兩個功能標注;

此外,還有引入了以下有符號定義但未提供實現(xiàn)的關(guān)鍵字:

  • - namespace 雖然在代碼中已經(jīng)有個關(guān)鍵字,是是還沒有具體實現(xiàn)命名空間的功能;

  • - trait 是混合編程模式概念,是代碼復(fù)用方法;

解析器方法 get_rule() 可以查詢 Token 類型與具體實現(xiàn)的規(guī)則。


enum is a Dictionary - view from GDScriptParser的評論 (共 條)

分享到微博請遵守國家法律
蓬莱市| 太仆寺旗| 绥芬河市| 泸州市| 古浪县| 泰安市| 广德县| 靖远县| 牟定县| 腾冲县| 鄂伦春自治旗| 乡宁县| 湖州市| 济源市| 乌拉特中旗| 阆中市| 东兰县| 嘉兴市| 河曲县| 板桥市| 札达县| 班戈县| 浦城县| 九龙坡区| 玉龙| 涟水县| 历史| 黄龙县| 福清市| 镇雄县| 河北省| 常州市| 新建县| 冷水江市| 息烽县| 田东县| 郯城县| 抚顺县| 抚州市| 卫辉市| 浙江省|