最近在手搓紅黑樹時遇到一個問題:類模板的派生類使用智能指針時的向下轉(zhuǎn)換錯誤,總之,經(jīng)過一番研究,智能指針無法實現(xiàn)類模板指針的向下轉(zhuǎn)換,最終還是用...
在上一章中,我們完成了一個符號表,作為一個基礎(chǔ)工作,接下來,我們要利用這個基礎(chǔ)實現(xiàn)一個功能:語義分析。 語義分析 什么是語義分析?形如這樣的代碼...
OK,接下來我們需要面對更加嚴(yán)肅的問題:如何構(gòu)建一個真正的解釋器?前幾章的內(nèi)容已經(jīng)足夠的有趣,但是僅僅是添加grammar,然后一步一步實現(xiàn)Le...
好吧在上一章中的Pascal語法并不準(zhǔn)確,接下來,我們要修正那些語法錯誤,并加入更多的Pascal語言特性,本章我們將更接近真正的Pascal解...
接下來的內(nèi)容將更加硬核,我們距離創(chuàng)造自己的編程語言更近一步——實現(xiàn)一個初步的Pascal解釋器。 Pascal 好吧這是一門古老的語言,在很久很...
這一章,我們要接觸一些稍微硬核點的知識,理解一個概念——抽象語法樹。 抽象語法樹和語法解析樹 對于文法: 當(dāng)輸入2*7+3時,可以構(gòu)造成如下語法...
本章,我們將繼續(xù)擴(kuò)展我們的解釋器,使其支持乘除運算符和運算符優(yōu)先級,我們將更加深入編譯原理,加入文法分析( grammar analysis )...
這一章,我們將實現(xiàn)形如"1+12+123-123"這樣連續(xù)的多位數(shù)加減法實現(xiàn),為此,我們需要一點點編譯原理。 語法圖與語法分析 對于上述表達(dá)式,...
在上一篇中,我們實現(xiàn)了一個簡單的加法解釋器,它僅支持一位數(shù)加法,接下來,我們向解釋器添加以下特性: 支持多位整數(shù) 可以跳過空格 支持減法 處理多...