999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的嵌入式開發工具的設計與實現

2022-11-11 14:52:23河南開封科技傳媒學院劉洋李冉白德華
數字技術與應用 2022年2期
關鍵詞:嵌入式語言設計

河南開封科技傳媒學院 劉洋 李冉 白德華

現階段嵌入式微控制其開發工具在具體的應用過程中通常情況下存在開發流程相對較為繁瑣,并且功能方面較為單一,同時價格方面相對較高。所以展開對嵌入式設備的使用的編譯器還有集成開發環境的有效研究,通過采用Python嵌入式開發工具的設計與實現從而一定程度降低嵌入式設備開發階段的成本同時改變開發工具的單一問題。

嵌入式設備的開發通常情況下是圍繞著嵌入式微控制器還有相關外部設備進行設計與開發的。相較于普通類型的臺式計算機的處理器,嵌入式微控制器成本相對較低,然而嵌入式微控制器的開發研究成本相對較高。

1 DE語言編譯器的設計與實現

1.1 編譯器的構建

編譯器的開發過程相對較為復雜,其在開發的過程中需要經過詞法以及語法還有語義的有效分析同時還需要進行代碼的生成等相關環節。原始代碼需要通過采用語法分析器編程展開逐個的標識,然后通過語法分析器進行抽象語法樹的構建,語義分析器展開對抽象語法樹的遍歷,處理完以上工作以后還需要借助代碼生成器實現對代碼的有效合理轉化。在進行語法分析的過程中通常情況下所采用的為不確定有窮自動機到確定有窮自動機的轉換以此展開對詞法分析器的有效建設。對于語法分析來講其主要涉及到兩大類型的算法,自頂向下與自底向上兩種。自頂向下類型的算法通常情況下在手工構造編譯器內進行應用,然而自底向上的算法大多數會采用第三方的解析器進行編譯器的建設。

1.2 編譯器構建工具

在進行對編譯器的構建過程中相對較為復雜,編譯器工具的采用能夠極大程度上降低工作的發在程度,以此使得開發人員能夠更加專注于進行語言編程設計上。經常使用的編譯器構建工具主要有Lex和Yacc以及Ply還有Spark等。盡管Lex與Yacc等編譯器構建工具能夠一定程度上實現編譯器開發的有效簡化,然而由于其在應用的過程中主要是其所采用的語法為獨立語法從而使得開發人員需要進行語法的學習以此使得其復雜程度提高。DE編程通過采用Python語言進行編譯器的構建,相較于其他類型的編譯器來講,更加靈活方便同時代碼也相對較為容易展開有效地測試與維護。在展開對詞法以及語法的解析過程中,采用Python語言的Ply模塊一方面能夠有效保留Python的特性,另一方面還能夠使其保持與Lex以及Yacc語法風格方面的一致性。并且,由于Ply主要是采用Lalr語法分析算法的,因此能夠有效確保其性能以及語法特性上的均衡性。

1.3 DE語言詞法分析部分的設計

DE語言詞法分析部分采用Python語言的Ply模板進行構建的,通過此種方式能夠一定程度上確保詞法分析器的跨平臺以及可擴展性。采用Ply模塊進行詞法分析的過程中,需要對代碼內的詞組注意解析成為一個個標識。Ply模塊在標識解析的過程中需要對所有標識的定義還有名稱予以對應同時還需要以“t”開頭。并且采用Python語言其具有一定的自省特性,能夠通過文檔字符串的定義實現對各個標識的定義。其能夠直接對簡單節點通過正則表達式展開定義,然而針對關鍵字等方面的定義需要采用額外定義獨立的函數同時還需要輔助字符串實現定義。DE語言的標識主要采用Python語言自帶的集合數據結構進行存儲,但是關鍵字通常情況下是采用Python語言自帶的字典數據結構實現存儲。

1.4 DE 語言語法分析部分的設計與實現

在處理完詞法分析以后,所輸入的代碼將會被解析成為逐個的標識進行存儲,從而方便后續工作中對于語法方面的分析識別應用。DE語言的語法分析也是采用的Ply模塊,采用Lalr進行部分改模塊語法分析,通過此種方式確保語法分析的高效。采用Ply模塊展開對語法的分析過程中,應當對各個標識定義還有其名稱相對應的以“P”開頭的方法。在展開具體的語法分析過程中,Ply模塊的終結符必須采用大寫字母,非終結符則采用小寫字母。在采用Ply模塊展開語法分析的過程中,需要為各個標識節點進行一個類的定義,在展開語法接卸的過程中,Ply將會自動地把構造的實例實現有效地拼接從而實現抽象語法樹的構建。

1.5 DE語言語義分析部分的設計與實現

借助Python語言自省的特性還有訪問者的模式能夠相對有效實現自定類型語法樹的遍歷,并且需要采用每個的描述節點的類均擁有統一的遍歷用的接口。此處各個描述節點的類均繼承了Node的類,借助此類的Accept方法實現對其子節點的遍歷。但是擁有容器功能的類需要繼承自ListNode類。在具體的編碼中Node類所擁有的Accept方法能夠借助Python自省功能進行對訪問者實例內的節點名稱的有效查找,同時能夠進行對以“Visit”為前綴的調用,對應節點名為后綴的方法。

1.6 DE 語言虛擬機的設計與實現

為了使得驗證DE語言編譯器設計便捷化,采用Python語言進行軟件仿真驗證用虛擬機的構建,因為虛擬機是采用Python語言完成的,因此其中的對象能夠采用Python的動態特性,在進行虛擬機仿真的過程中能夠采用Python語言內的大數類型,但是不需要考慮與大數相關的問題。并且堆棧的狀態下,各條指令的執行時間觀測與模擬相對較為方便。

2 OOC面向對象框架的設計與實現

OOC框架主要是采用元標稱技巧還有現代C編譯器的宏的特性,展開對C語言展開有效地擴展,其在形式上與C++相同并且實現了對面型對象思想中多態的模擬,具有單根繼承特性。一方面使得維護性與可重用性得到了一定程度的提升,另一方面還實現了原生面向對象代碼向C語言移植環節的有效簡化。OOC框架通過把對象模型還有類型系統的設計進行有效地分離從而實現功能與易用性間的平衡,從而使其側重于對象模型設計與實現的簡化。針對OOC框架內的對象模型主要是綜合利用了元編程技巧還有現代C編譯器的特性,以此實現了開發的簡化,確保且應用方便程度,并且能夠對有效的模擬面向對象的基本特性。OOC對象模型通過把虛表結構還有實例結構的有效分離,進行對成員與方法的有效區分,實現內存節約的作用。同時在虛表結構內增添了一個成員展開對實例的計數。為了提高簡潔程度,OOC框架省去了C++模型內與運行階段類型信息相關的結構,然而此方面對于面向對象內的封裝還有繼承以及多態特性的模擬不會造成影響。OOC框架主要是通過若干個模塊構成的,其中較為關鍵的部分定義在OOCore模塊內。采用OOBase模塊進行對其予以有效地擴展,從而使其能夠支持單根繼承還有虛表結構。OOC框架內的繼承關系每加深一級,均會在實例結構的尾部多分配一個雙重泛型指針指向當前類型虛表結構,同時實例結構頭部內虛表指針指向的則是最后以及類型的虛表結構。采用雙重泛型指針能夠確保在進行構造以及析構的過程中直接通過實例的構造或者析構函數進行對虛表結構內的實例計數用的成員進行有效地修改,并且如此設計避免了額外的全局變量的引入,通過此種方式提高了整體架構的靈活性。通過在OOC框架內進行調試層的添加從而使得程序的調試變得便捷,調試層能夠與GCC配合從而一起使用。在宏開關內將調試選項打開同時把調試層進行一起編譯過程中,調試層能夠對New宏還有Delete宏內所封裝的malloc函數以及free函數進行有效地替換,以此實現對內存的有效分配以及進行記錄的釋放和輸出。將釋放的記錄輸出到相應的文件內,同時利用相關工具進行函數調用關系圖表。

3 DB圖形化集成開發環境的設計與實現

針對DB集成開發環境來講其在功能方面主要涉及到工程的管理以及外部程序的調用還有代碼的編輯等內容。對于工程管理其直接采用文件目錄展開的管理,經過對不同文件后綴進行類型的有效識別。代碼編輯器主要是采用的多窗體代碼編輯器,其主要是以QSintilla以及PyQty圖形庫為基礎進行開發的,其具有明顯的現代編輯器特性。在進行程序的調用過程中主要是借助Qt圖形庫內QProcess模塊進行對外部程序的有效調用,以此實現了對代碼編譯以及下載功能的有效整合,并且還能夠把Shell進行有效地嵌入。

DB集成開發環境在開發過程中所采用的模式為自底至上的模式,并且工程管理其還有代碼編輯器主要部件在設計過程中使其能夠進行獨立運行,然后通過主程序實現對各部件的有效整合。在具體的整合環節涉及到各部件之間相應消息的傳遞。進行消息的傳遞主要是借助Qt庫內的信號以及槽的機制。在Qt框架內,各個信號均能夠與所有事件進行綁定,同時能夠實際情況進行動態情況下的綁定解除或者進行過濾器的有效添加展開屏蔽。

針對DB集成開發環境來講由于其屬于集成開發環境,需要進行項目工程的管理,其能夠通過直接使用文件展開對工程的管理。DB集成開發環境有效擴展了QFileSystemModel類,同時采用QTreeView類通過樹狀控件的形式予以顯示。針對DB集成開發環境中C語言還有DE語言等代碼編輯器主要是借助QScintilla模塊。對于Scintilla編輯器來講其適用于Python的綁定。其功能主要涉及到語法樣式高亮以及錯誤提示還有自動補全等功能,同時其還能夠支持多樣式功能。此模塊通過與Python語言的有效結合從而一定程度上實現了開發流程的有效簡化。現階段的集成開發環境中通常會支持內嵌Shell的功能,從而有助于其他應用程序的調用,DE集成開發環境也具有該項功能。針對普通應用,能夠直接采用Python的subprocess模塊便能夠進行外部程序的調用,然而針對集成開發環境下內嵌的Shell工具,在實際的應用過程中需要支持輸入命令可交互以及執行程序無阻塞還有返回信息能夠被及時捕獲。因此,采用了Qt內的QProcess類,其能夠實現異步外部程序的調用,對于Qt界面的交互不會產生影響。通過設計一個名為Monitor的類從而實現DB集成開發環境的Shell,此類集成自QWidget類,主要涵蓋了QProcess類與QTextBrowser類的實例。在進行DB集成開發環境的嵌入環節,在以此為條件進行名為Launcher類的設計,借助QTextBrowser部件能夠令DB集成開發環境實現同時多個Shell。為程序啟動器的類的繼承關系,采用程序啟動器在DB集成開發環境中進行“ls”命令的執行。完成執行以后則會返回至當前執行定指令名稱還有調用程序返回定結果。采用該種方式,把需要的功能與圖形化定按鈕展開有效的綁定,以此提高文件操作的便捷性。

通過借助PyQt圖形庫還有QScintilla編輯器構建工具進行嵌入式設備的圖像化集成開發環境DB的設計,進而展開對DE語言還有C語言的OOC框架的有效整合,從而提升開發的簡潔性。

4 結語

基于Python的嵌入式開發工具的設計與實現,能夠有效解決嵌入設備開發成本較高的問題以及開發工具單一性的情況。然而現階段該方面的設計存在一定的不足,在今后的研究過程中應當注重功能的豐富以及簡潔性的提升,以此促進程序開發的有效發展。

猜你喜歡
嵌入式語言設計
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
搭建基于Qt的嵌入式開發平臺
讓語言描寫搖曳多姿
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
累積動態分析下的同聲傳譯語言壓縮
我有我語言
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 伊人激情综合网| 婷婷综合缴情亚洲五月伊| 日韩欧美成人高清在线观看| 中文字幕无码制服中字| 91丝袜乱伦| 亚洲日产2021三区在线| 国产精品99r8在线观看| 在线a网站| 国产网友愉拍精品视频| 极品私人尤物在线精品首页| 亚洲欧美日韩天堂| 国产午夜福利亚洲第一| 国产欧美视频一区二区三区| 极品私人尤物在线精品首页 | 国产激情影院| 欧美专区日韩专区| 三级毛片在线播放| 色视频久久| 国产凹凸一区在线观看视频| 天堂网亚洲综合在线| 久久久久亚洲av成人网人人软件| 国产综合色在线视频播放线视| 丝袜亚洲综合| 日韩专区第一页| 老司机精品99在线播放| 91精品国产91久无码网站| 成人在线不卡| 久久香蕉国产线看精品| Jizz国产色系免费| 久久午夜夜伦鲁鲁片不卡| 欧美成人a∨视频免费观看| 日日拍夜夜嗷嗷叫国产| 日日噜噜夜夜狠狠视频| 日本免费精品| 99久久免费精品特色大片| 91精品视频播放| 午夜性爽视频男人的天堂| 国产精品xxx| 毛片网站在线看| 亚洲日韩欧美在线观看| 国产三级a| 国产色爱av资源综合区| 亚洲乱码精品久久久久..| 欧美 亚洲 日韩 国产| 久久99国产综合精品女同| 97久久精品人人做人人爽| 国产人成在线观看| 免费欧美一级| 日韩福利在线观看| 国产精品嫩草影院av| 国产成人亚洲综合a∨婷婷| 亚洲国产精品无码久久一线| 色婷婷成人| 人妻中文字幕无码久久一区| 国产白浆在线| 日韩欧美亚洲国产成人综合| 日韩精品专区免费无码aⅴ| 99热这里只有精品在线观看| 亚欧美国产综合| 国产青青操| 99精品视频播放| 国产精品亚洲综合久久小说| 尤物特级无码毛片免费| 黄色不卡视频| 日韩乱码免费一区二区三区| 91精品国产91久久久久久三级| 99久久国产综合精品2023| 亚洲黄色网站视频| 9966国产精品视频| 三上悠亚在线精品二区| 日韩高清欧美| 国产精品视频导航| 亚洲国产日韩在线观看| 亚洲福利片无码最新在线播放| 久久婷婷综合色一区二区| 国产一级在线观看www色| 尤物亚洲最大AV无码网站| 婷婷激情五月网| 国产永久在线视频| 污网站免费在线观看| 久久久黄色片| 亚洲Aⅴ无码专区在线观看q|