<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入了解抽象語法樹(AST)及其在使用工具和庫中的應用

哲想軟件 ? 來源:哲想軟件 ? 作者:哲想軟件 ? 2022-10-13 09:20 ? 次閱讀

在本文中,我們將深入了解抽象語法樹(AST)及其在日常工作中使用的工具和庫中的應用。我們更感興趣的是AST的實際使用和應用,而不是編譯器、解析器編程語言開發工具的晦澀學術理論。

這是一系列文章中的第一篇,該文章探討了Freshworks的前端開發人員構建和使用的各種AST工具來執行大量活動,例如大規模代碼遷移、重構等。

AST 探索者

有一個在線工具可以探索由各種語言解析器生成的AST,稱為ASTExplorer,由Facebook的工程師構建。它支持多種語言和解析器。您可以輸入代碼并獲取它表示的AST格式,并在同一瀏覽器窗口中檢查節點和數據。您還可以編寫轉換函數,這將幫助您使用AST更改或重構代碼。對于任何想要了解AST并在其幫助下創建工具的人來說,這是學習和使用AST的最佳工具。

83c2677c-4a8d-11ed-a3b6-dac502259ad0.png

為什么AST對工具很重要?

抽象語法樹是任何語言開發工具的構建塊,因為它們是有效操作源代碼的可擴展手段。通過將代碼表示為樹狀結構,您可以利用樹數據結構附帶的所有有效操作機制。它比處理以文本片段或字符串表示形式表示的源代碼要快得多。這是因為如果您想對源代碼進行高級和復雜的操作,那么使用純字符串和字符序列將是一場噩夢。如果您希望有一個方便的表示來對您的代碼進行更改而不會產生意想不到的后果和副作用,那么AST是最好的表示。將源代碼轉換為抽象語法樹格式后,

這就是為什么所有語言標準都默認帶有AST規范的原因。該語言本身具有用于創建、轉換和使用AST的內置API。除此之外,總會有外部工具和庫使使用AST成為一項方便而輕松的任務。

那么我們實際上在哪里使用AST呢?簡而言之,它在工具和庫的Javascript生態系統中無處不在。從這個列表中可以看出,如果沒有AST,則根本不可能為Javascript項目提供工具。

語法高亮

代碼完成

靜態分析

代碼覆蓋率

縮小

即時編譯

源地圖

編譯成JS語言

代碼重構

代碼遷移等等。

代碼模組

在Freshworks,當我們嘗試將Ember代碼遷移到新版本時,我們首先遇到了像Codemods這樣的AST工具。Ember框架和社區本身提供了許多codemods來幫助您更輕松、更省時地進行遷移。我們已經寫了一篇關于我們如何使用Codemods來遷移我們的代碼庫的博客文章

您可能想查看它以重新了解codemod,包括為什么它們有意義,以及為什么它們應該成為您的自動遷移工具的關鍵部分。甚至諸如React、Angular和Vue之類的框架也推薦并提供codemods用于從框架的一個版本遷移到下一個版本的升級。

一旦我們開始使用Codemods進行遷移,我們的開發人員發現將他們的代碼遷移到較新版本的框架非常有用且節省時間。我們需要越來越多的codemod來解決我們的一些遷移問題。因此,我們開始探索和編寫專門解決我們自己的代碼遷移問題的codemod,但同時使codemod更加通用,以便我們可以與更大的JavaScript開發人員社區共享它們并使其開源。

但是我們的一些開發人員無法完全掌握AST等Codemod的底層架構以及Babel、recast和jscodeshift等相關工具。所以我們決定讓我們的開發人員更容易理解這一點,并減少學習的痛苦。我們圍繞AST構建了一堆工具來幫助開發人員熟悉AST和codemods。本系列博文將深入探討這些工具的內部架構和組件,從而抓住這些工具的本質和意義。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程語言
    +關注

    關注

    9

    文章

    1889

    瀏覽量

    33719
  • javascript
    +關注

    關注

    0

    文章

    513

    瀏覽量

    53490
  • AST
    AST
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2291

原文標題:Freshworks:AST工具簡介(下)

文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深入了解邏輯分析儀入門手冊

    深入了解邏輯分析儀入門手冊引言與許多電子測試和測量工具一樣,邏輯分析儀是一種針對特定類型問題的解決方案。它是一種通用工具,可以幫助您調試數字硬件、檢驗設計和調試嵌入式軟件。對設計數字電路的工程師來說
    發表于 11-19 11:40

    深入了解示波器

    深入了解示波器
    發表于 11-14 22:32

    專家開講:深入了解電池技術 ──Part 1

    。筆者不會一一詳細介紹所有的電池技術,只選擇一些常見或是值得認識的;而在接下來的專欄里,筆者將開始介紹電池分類、常見規格以及專業術語,如果你有特別想知道的電池技術,歡迎留言!擴展閱讀:專家開講:深入了解
    發表于 08-18 09:33

    專家開講:深入了解電池技術──Part 3

    資深工程師 Ivan Cowie 的「深入了解電池技術」專欄Part 3來啰!這次要介紹的是鉛酸電池(lead-acidbatteries)技術。鉛酸電池是1859年由法國物理學家Gaston
    發表于 08-18 09:37

    單片機的深入了解!

    項目名稱:單片機的深入了解!項目是否開源:否申請開發板數量:1 塊申請人團隊介紹:我們團隊由五個人組成,我們打算開始著手單片機的程序改編,設計一些比較特殊新穎的東西!希望給以支持!
    發表于 10-12 20:00

    深入了解LabVIEW FPGA資料分享

    深入了解LabVIEW FPGA
    發表于 05-27 08:35

    es6語法函數參數

    es6語法函數參數 本文我們的《 實用ES6》 一書中有介紹 。 深入了解ES6引入的新語言功能。ES6引
    發表于 09-16 08:17

    示波器的深入了解

    示波器的深入了解 引言自然界運行著各種形式的正弦波,比如海浪、地震、聲波、爆破、空氣中傳播的聲音,或者身體運轉的自然節律。物理世界里,能
    發表于 11-04 11:53 ?52次下載
    示波器的<b class='flag-5'>深入了解</b>

    深入了解邏輯分析儀

    深入了解邏輯分析儀 與許多電子測試和測量工具一樣, 邏輯分析儀是一種針對特定類型問題的解決方案。 它是一種通用工具, 可以幫助您調試數字硬件、 檢
    發表于 02-11 10:56 ?39次下載

    深入了解賽靈思System Generator中的時間參數

    深入了解賽靈思System Generator中的時間參數  基于模型的設計(MBD)因其在縮小實時系統抽象的數學建模和物理實現之間差距方面的光明前景而備受關注。通過使用相同的
    發表于 12-29 11:40 ?1357次閱讀
    <b class='flag-5'>深入了解</b>賽靈思System Generator中的時間參數

    帶你深入了解光耦

    電子發燒友網帶你深入了解光耦相關知識,講述光耦的作用,光耦原理及各種光耦型號和替代型號,讓大家全面了解光電耦合器
    發表于 03-16 16:43
    帶你<b class='flag-5'>深入了解</b>光耦

    深入了解電感與磁珠的異同

    模擬電子的相關知識學習教材資料——深入了解電感與磁珠的異同
    發表于 09-27 15:19 ?0次下載

    帶你深入了解示波器

    帶你深入了解示波器
    發表于 02-07 14:26 ?18次下載

    深入了解安全光柵

    深入了解安全光柵
    的頭像 發表于 06-25 13:53 ?855次閱讀
    <b class='flag-5'>深入了解</b>安全光柵

    深入了解 GaN 技術

    深入了解 GaN 技術
    的頭像 發表于 12-06 17:28 ?5648次閱讀
    <b class='flag-5'>深入了解</b> GaN 技術
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>