最近在手搓紅黑樹時遇到一個問題:類模板的派生類使用智能指針時的向下轉換錯誤,總之,經過一番研究,智能指針無法實現類模板指針的向下轉換,最終還是用裸指針手動管理內存更加靈活。 ...
最近在手搓紅黑樹時遇到一個問題:類模板的派生類使用智能指針時的向下轉換錯誤,總之,經過一番研究,智能指針無法實現類模板指針的向下轉換,最終還是用裸指針手動管理內存更加靈活。 ...
在上一章中,我們完成了一個符號表,作為一個基礎工作,接下來,我們要利用這個基礎實現一個功能:語義分析。 語義分析 什么是語義分析?形如這樣的代碼: 在詞法和語法層面,它都沒有...
OK,接下來我們需要面對更加嚴肅的問題:如何構建一個真正的解釋器?前幾章的內容已經足夠的有趣,但是僅僅是添加grammar,然后一步一步實現Lexer,AST nodes,S...
好吧在上一章中的Pascal語法并不準確,接下來,我們要修正那些語法錯誤,并加入更多的Pascal語言特性,本章我們將更接近真正的Pascal解釋器,完成形如以下代碼的解釋:...
接下來的內容將更加硬核,我們距離創(chuàng)造自己的編程語言更近一步——實現一個初步的Pascal解釋器。 Pascal 好吧這是一門古老的語言,在很久很久以前,我還是個初中生的時候稍...
這一章,我們要接觸一些稍微硬核點的知識,理解一個概念——抽象語法樹。 抽象語法樹和語法解析樹 對于文法: 當輸入2*7+3時,可以構造成如下語法解析樹: 很容易理解吧,但是這...
本章,我們將繼續(xù)擴展我們的解釋器,使其支持乘除運算符和運算符優(yōu)先級,我們將更加深入編譯原理,加入文法分析( grammar analysis )。 文法與文法分析 等一下,什...
這一章,我們將實現形如"1+12+123-123"這樣連續(xù)的多位數加減法實現,為此,我們需要一點點編譯原理。 語法圖與語法分析 對于上述表達式,我們可以構建一個簡單的語法圖 ...
在上一篇中,我們實現了一個簡單的加法解釋器,它僅支持一位數加法,接下來,我們向解釋器添加以下特性: 支持多位整數 可以跳過空格 支持減法 處理多位整數 上一篇中,我們直接使用...
參考:Let’s Build A Simple Interpreter.[https://ruslanspivak.com/lsbasi-part1/]源代碼:github[...
OCP(Open-Closed Principle),通常認為是Bertrand Meyer[https://en.wikipedia.org/wiki/Bertrand_M...
引用 計算機專業(yè)大一的基礎內容之一,值傳遞和引用傳遞: 這里會輸出兩個2: 當然用指針可以達到類似的效果,但不完全等價: 用指針太容易出現內存問題了,引用更加安全,指針可能會...
最近遇到了一個問題,一個平時運行沒有毛病的模塊,被ASAN報heap use after free,問題出在堆內存,但是看上去全局變量沒有哪里會被釋放,唯一有風險的地方是在棧...
進行面向對象程序設計的時候,我們需要面對很多問題,比如: 什么時候需要一個類 一個類應該包含哪些功能,不包含哪些功能 類之間的依賴關系設計 還有很多其它的問題,如果不遵照一些...
一個常見的定義module的方法是寫一個.py文件,除此以外,Python的底層實現是C/C++,所以你也可以使用C/C++來寫module,當然這是比較高級的方法了,暫時不...
類和對象,作為面向對象編程的核心,在所有OOP語言里面都是重頭戲,Python也不例外。Python中的類和對象定義如下: 以class關鍵字開頭,定義了一個foo類,并使用...
Python的類內成員函數是method類型,而普通函數是function類型,精確地來說,類成員函數應該被稱為方法。通過以下代碼,可以看到它們各自的類型: 輸出結果: 和很...
區(qū)別于C/C++, java等編程語言,python是一門弱類型語言,如果你接觸過perl或者JS之類的弱類型語言,那么對這個特性應該不陌生。當然即使是動態(tài)類型語言,變量也是...
前言:因為嫌棄通過參數啟動過于繁瑣,并且對于需要進行分支選擇的情況不好處理,想使用命令行按鍵菜單的形式給用戶做選擇,結果居然發(fā)現python沒有提供現成的API,于是研究了一...
前言:Python很方便,平時工作偶爾用來做一些小工具,需要參考的時候百度搜出來的東西實在不靠譜,遂決定根據官網的文檔系統地學習一下,順便給中文Python學習資料增加一點內...