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