@ast

动态 列表
@heiyanjing

AST語法樹增刪改查

AST 是 Abstract Syntax Tree 的縮寫,即 “抽象語法樹”.它是以樹狀的形式表現編程語言的語法結構. webpack 打包 JS 代碼的時候,webpack 會在我們的原有代碼基礎上新增一些代碼, 例如我們可以在打包JS 代碼的時候將高級代碼轉為低級代碼,就是通過 AST 語法樹來完成的 AST在線生成地址 babel插件查看使用地址 AST生成過程由源碼-詞法分

heiyanjing 头像

@heiyanjing

昵称 HeiYanjing

@tsteam

AST初探

前端開發中,使用了很多工具,譬如webpack、eslint來提升研發效率,但我們並不知道這些工具的實現原理。基於這些工具的核心都是抽象語法樹,那我們就從抽象語法樹開始理解底層原理的新世界吧。 一、抽象語法樹是什麼 顧名思義,首先可以確定的是,這是一顆跟語法相關的樹。 先上一盤硬菜,維基百科定義如下: In computer science, an abstract syntax tree (AS

tsteam 头像

@tsteam

昵称 tsteam

@doupifaner

AST,真香

豆皮粉兒們,又見面了,今天這一期,由字節跳動數據平台的太郎醬,帶大家走進AST的世界。 作者:太郎醬 什麼是AST 抽象語法樹(Abstract Syntax Tree, AST),是源代碼的抽象語法結構的樹狀表示,與之對應的是具體語法樹;之所以是抽象的,是因為抽象語法樹並不會表示出真實語法中出現的每一個細節,而且是文法無關、不依賴於語言的細節;可以把AST想象成一套標準化的編程語言接口定義,只不

doupifaner 头像

@doupifaner

昵称 豆皮範兒

@musicfe

手把手帶你走進Babel的編譯世界

作者:BoBoooooo 前言 談及 Babel,必然離不開 AST。有關 AST 這個知識點其實是很重要的,但由於涉及到代碼編譯階段,大多情況都是由各個框架內置相關處理,所以作為開發(使用)者本身,往往會忽視這個過程。希望通過這篇文章,帶各位同學走進 AST,藉助 AST 發揮更多的想象力。 AST 概述 想必大家總是聽到 AST 這個概念,那麼到底什麼是 AST? AST 全稱是是 Abs

musicfe 头像

@musicfe

昵称 雲音樂技術團隊

@thjjames

編寫babel的插件

前言 Babel 是一個通用的多功能的 JavaScript 編譯器,讓一些新版本的語法或者語法糖可以在低版本的瀏覽器上跑起來。 它有三個主要處理步驟 Parse - Transform - Generate。 在 Transform 轉換過程中通過將插件(或預設)應用到配置文件來啓用代碼轉換。 AST 編寫 Babel 插件非常複雜,需要有相當的基礎知識,在講插件之前必須得提起 AS

thjjames 头像

@thjjames

昵称 小皇帝James

@guanguans

PHP-Parser 應用之掃描發現代碼中的打印、輸出結構語句

PHP-Parser 應用之掃描發現代碼中的打印、輸出結構語句 PHP-Parser 是由 nikic 開發的一個 PHP 抽象語法樹(AST)解析器,可方便的將代碼與抽象語法樹互相轉換。工程上常用來生成模板代碼(如 rector)、生成抽象語法樹進行靜態分析(如 phpstan)。最近學習應用(靜態分析)了一下,編寫了一個簡單的掃描發現代碼中的打印、輸出結構語句的命令(FindDumpState

guanguans 头像

@guanguans

昵称 guanguans

@piano

如何用Go快速實現規則引擎

一、出師之名 提到規則引擎,大部分人都會先想到DSL(Domain Specific Language),進而聯想令人生畏的編譯原理、遞歸下降、LL或LR。但規則引擎有大有小,它們在不同場景的存在不一樣,並不一定都要這麼複雜。 比如在一個小型支付系統的簡單風控場景裏,產品同學想設置一些規則避免用户的銀行卡被盜刷或者商户被薅羊毛: 24小時內支付總金額超10w的用户 1小時使用信用卡支付金額超

piano 头像

@piano

昵称 Kyrie

@dushigemi

GoGoCode 20行代碼實現 給所有的async函數添加try/catch

最近網上突然多了好多 給所有的async函數添加try/catch 的面試題,實現思路基本就是用 babel 正好最近也在學習 GoGoCode,就想到用 GoGoCode 實現一下 GoGoCode 是一個基於 AST 的 JavaScript/Typescript/HTML 代碼轉換工具,但相較於同類,它提供了更符合直覺的 API:一套類 JQuery 的 API 用來查找和處理 AST

dushigemi 头像

@dushigemi

昵称 灬都是個謎

@jihu_gitlab

GitLab 憑藉什麼連續 3 年上榜 Gartner 應用程序安全測試魔力象限?聽聽 GitLab 自己的分析

本文來源:about.gitlab.com 作者:Sandra Gittlen 譯者:極狐(GitLab) 市場部內容團隊 應用程序安全測試(AST)對於應用程序研發來説,是一個正在快速發展並且十分重要的領域。DevOps 方法論提到:需要將測試集成到開發人員的工作流中。GitLab 相信在軟件研發中,AST 越成熟,應用程序就會越安全,同時企業也能夠更容易滿足合規要求。相信 D

jihu_gitlab 头像

@jihu_gitlab

昵称 極狐GitLab

@linybjikezhilu

聊聊如何通過APT+AST來實現AOP功能

前言 如果有使用過spring aop功能的小夥伴,應該都會知道spring aop主要是通過動態代理在運行時,對業務進行切面攔截操作。今天我們就來實現一下如何通過APT+AST在編譯期時實現AOP功能。不過在此之前先科普一下APT和AST相關內容 APT(註解處理器) apt可以查看我之前寫過的文章聊聊如何運用JAVA註解處理器(APT) AST(抽象語法樹) 什麼是AST 抽象語法樹(Abst

linybjikezhilu 头像

@linybjikezhilu

昵称 linyb極客之路

@jdcdevloper

抽象語法樹AST必知必會 | 京東物流技術團隊

1 介紹 AST 打開前端項目中的 package.json,會發現眾多工具已經佔據了我們開發日常的各個角落,例如 JavaScript 轉譯、CSS 預處理、代碼壓縮、ESLint、Prettier 等。這些工具模塊大都不會交付到生產環境中,但它們的存在於我們的開發而言是不可或缺的。 Babel,Webpack,Vue-cli 和 EsLint 等很多的工具和庫的核心都是通過 Abstract

jdcdevloper 头像

@jdcdevloper

昵称 京東雲開發者

@q_bit

pyparsing 2.x 案例(qbit)

前言 技術棧 Python 3.11 pyparsing 2.4.7 loguru 0.7.2 xmltodict 0.13.0 案例 測試解析 與 或 測試代碼 # encoding: utf-8 # author: qbit # date: 2023-12-14 # summary: pyparsing 2.x 解析測試,測試 AND OR import json i

q_bit 头像

@q_bit

昵称 qbit

@vivo_tech

一次基於AST的大規模代碼遷移實踐

作者:來自 vivo 互聯網大前端團隊- Wei Xing 在研發項目過程中,我們經常會遇到技術架構迭代更新的需求,通過技術的迭代更新,讓項目從新的技術特性中受益,但由於很多新的技術迭代版本並不能完全向下兼容,包含了很多非兼容性的改變(Breaking Changes),因此我們需要設計一款工具,幫助我們完成大規模代碼自動遷移問題。本文簡單闡述了基於 AST 的代碼遷移概念和大致流程,並通過代碼案

vivo_tech 头像

@vivo_tech

昵称 vivo互聯網技術

@ineo6

GitMaster 是如何定製 file-icons/atom

GitMaster裏面展示項目結構時,同時也顯示了對應的icon。 看起來和Octotree是沒什麼區別,但其實在維護和更新上是有顯著區別的。 Octotree是直接從file-icons/atom複製相關樣式和字體文件到項目裏,這樣耦合的方式很不利於維護,所以我在處理文件圖標時進行了額外的處理,把所有文件圖標通過npm包的形式引入。 大家可能好奇為什麼不直接用file-icons/atom,沒有

ineo6 头像

@ineo6

昵称 ineo6

@jdcdevloper

帶你揭開神秘的javascript AST面紗之AST 基礎與功能

作者:京東科技 周明亮 AST 基礎與功能 在前端裏面有一個很重要的概念,也是最原子化的內容,就是 AST ,幾乎所有的框架,都是基於 AST 進行改造運行,比如:React / Vue /Taro 等等。 多端的運行使用,都離不開 AST 這個概念。 在大家理解相關原理和背景後,我們可以通過手寫簡單的編譯器,簡單實現一個 Javascript 的代碼編譯器,編譯後在瀏覽器端正常運行。 創建數字小

jdcdevloper 头像

@jdcdevloper

昵称 京東雲開發者

@littlelyon

使用 AST 遷移複雜前端項目的探索

寫在前面 也不知道為什麼,每一次工作變動,所接手的第一個項目,都和項目遷移有關。這次也不例外,在 5 月初入職樂天之後,處理完雜七雜八的事情,第一個接手的項目是將一個大概有 5 年開發週期的 nuxt 2 前端項目,遷移到 nuxt 3 版本。 項目遷移與“屎山” 談及項目遷移,尤其是複雜項目,很容易讓人把它和“屎山”聯繫起來,而事實上也是如此,大多數規模較大的項目,往往都具備“屎山”的各種特徵,

littlelyon 头像

@littlelyon

昵称 littlelyon

@jdcdevloper

帶你揭開神秘的Javascript AST面紗之Babel AST 四件套的使用方法

作者:京東零售 周明亮 寫在前面 這裏我們初步提到了一些基礎概念和應用: 分析器 抽象語法樹 AST AST 在 JS 中的用途 AST 的應用實踐 有了初步的認識,還有常規的代碼改造應用實踐,現在我們來詳細説説使用 AST, 如何進行代碼改造? Babel AST 四件套的使用方法 其實在解析 AST 這個工具上,有很多可以使用,上文我們已經提到過了。對於 JS 的 AST 大家已經

jdcdevloper 头像

@jdcdevloper

昵称 京東雲開發者

@fenanjiu

從Babel開始認識AST抽象語法樹

前言 AST抽象語法樹想必大家都有聽過這個概念,但是不是隻停留在聽過這個層面呢。其實它對於編程來講是一個非常重要的概念,當然也包括前端,在很多地方都能看見AST抽象語法樹的影子,其中不乏有vue、react、babel、webpack、typeScript、eslint等。簡單來説但凡需要編譯的地方你基本都能發現AST的存在。 babel是用來將javascript高級語法編譯成瀏覽器能夠執行的語

fenanjiu 头像

@fenanjiu

昵称 南玖

@linong

通過 AST 實現組件庫替換升級

年初接到一個任務將 semi-ui 替換到 antd,但是能人力預算不太夠,所以基於工作量和效率選擇了基於 AST 的替換方案。 項目技術棧是 React + tsx 為什麼要使用 AST? AST(Abstract Syntax Tree,抽象語法樹)是一種在計算機科學中表示源代碼語法結構的樹狀數據結構。 通過 AST,可以理解代碼的結構和含義,實現代碼分析、轉換和操作。 基於 AS

linong 头像

@linong

昵称 linong

@huankuaidehongjiu_c2eaor

用Babel操作AST實現JavaScript代碼的自動化生成與轉換

目錄 目錄 環境搭建 代碼:修改AST的邏輯 重命名函數名 重命名變量並修改變量值 函數調用替換 控制流扁平化還原 刪除未使用的變量 對象屬性簡化 條件表達式優化 表達式還原 環境搭建 安裝環境 npm install @babel/parser @babel/traverse @babel/genera

huankuaidehongjiu_c2eaor 头像

@huankuaidehongjiu_c2eaor

昵称 歡快的紅酒_c2Eaor