在上一篇文章中,完成了對(duì)括號(hào)的支持,這樣整個(gè)程序就可以解析普通的算術(shù)表達(dá)式了汛蝙。但是在解析兩個(gè)括號(hào)的過(guò)程中發(fā)現(xiàn)有大量的地方需要進(jìn)行索引的回退操作孝治,索引的操作應(yīng)該保證能得到爭(zhēng)取的...
在上一篇文章中,完成了對(duì)括號(hào)的支持,這樣整個(gè)程序就可以解析普通的算術(shù)表達(dá)式了汛蝙。但是在解析兩個(gè)括號(hào)的過(guò)程中發(fā)現(xiàn)有大量的地方需要進(jìn)行索引的回退操作孝治,索引的操作應(yīng)該保證能得到爭(zhēng)取的...
在上一篇我們添加了對(duì)乘除法的支持担巩,也介紹了BNF范式榨馁,并且針對(duì)當(dāng)前的算術(shù)表達(dá)式寫出了對(duì)應(yīng)的范式森篷,同時(shí)根據(jù)范式給出相應(yīng)的代碼實(shí)現(xiàn)薛耻。這篇我們將繼續(xù)為算數(shù)表達(dá)式添加對(duì)括號(hào)的支持营罢。 ...
在上一篇中,我們實(shí)現(xiàn)了對(duì)減法的支持饼齿,并且介紹了語(yǔ)法圖饲漾。針對(duì)簡(jiǎn)單的語(yǔ)法進(jìn)行描述,用語(yǔ)法圖描述當(dāng)然是沒(méi)問(wèn)題的缕溉。但是針對(duì)一些復(fù)雜的語(yǔ)法進(jìn)行描述考传,如果每個(gè)部分都通過(guò)語(yǔ)法圖來(lái)描述就顯得...
在上一篇我們實(shí)現(xiàn)了一個(gè)可以計(jì)算兩個(gè)多位整數(shù)加減法的計(jì)算器。本章我們繼續(xù)來(lái)給這個(gè)計(jì)算器添加功能证鸥,這次要給它添加可以連續(xù)計(jì)算多個(gè)整數(shù)相加減的功能僚楞。例如我們可以計(jì)算 1 + 2 +...
上一篇我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的加法計(jì)算器,并且了解了基本的詞法分析枉层、詞法分析器的概念泉褐。本篇我們將要對(duì)之前實(shí)現(xiàn)的加法計(jì)算器進(jìn)行擴(kuò)展,我們?yōu)樗砑右韵聨讉€(gè)功能 計(jì)算減法 能自動(dòng)識(shí)別并...
為什么要學(xué)習(xí)編譯器和解釋器呢鸟蜡?文中的作者給出的答案有下面幾個(gè): 為了深入理解計(jì)算機(jī)是如何工作的:一個(gè)顯而易見(jiàn)的道理就是膜赃,如果你不懂編譯器和解釋器是如何工作的那么你就不明白計(jì)算...
作為一個(gè)程序員,自制自己的編譯器一直是一個(gè)夢(mèng)想矩欠。之前也曾為了這個(gè)夢(mèng)想學(xué)習(xí)過(guò)類似龍書(shū)财剖、虎書(shū)這種大部頭的書(shū)悠夯,但是光看理論總有一些云里霧里的感覺(jué)√煞兀看完只覺(jué)得腦袋昏昏沉沉并沒(méi)有覺(jué)得有...
很抱歉我決定結(jié)束這個(gè)系列的內(nèi)容了沦补。原本我打算介紹markdown、orgmode相關(guān)的配置咪橙,甚至還打算介紹如何在vim 中使用 emacs 的 org-agenda 來(lái)進(jìn)行日...
很抱歉又拖更了這么久了夕膀,在這個(gè)新公司我想快速度過(guò)試用期,所以大部分的精力主要花在日常工作上面美侦。但是這個(gè)系列還是得更新下去产舞,平時(shí)只能抽有限的業(yè)余時(shí)間來(lái)準(zhǔn)備。這就導(dǎo)致我寫這些文章...
時(shí)光荏苒菠剩,歲月如梭易猫。轉(zhuǎn)眼間2022已經(jīng)過(guò)去了。過(guò)去的2022年我們?nèi)匀唤?jīng)歷了幾波疫情的防控具壮,個(gè)人和企業(yè)的日子都不太好過(guò)准颓,仍然有互聯(lián)網(wǎng)公司的裁員,有超額的加班等等讓人心里感到不...
很抱歉這么久才來(lái)更新這一系列棺妓,主要是來(lái)新公司還在試用期攘已,我希望在試用期干出點(diǎn)事來(lái),所以摸魚(yú)的時(shí)間就少了怜跑。加上前面自己陽(yáng)了休息了一段時(shí)間样勃。在想起來(lái)更新就過(guò)去一個(gè)多月了。廢話不多...
首先給大家說(shuō)一聲抱歉诵姜,前段時(shí)間一直在忙換工作的事汽煮,包括但不限于交接、背面試題準(zhǔn)備面試棚唆。好在最終找到了工作暇赤,也順利入職了。期間也有朋友在催更宵凌,在這里我對(duì)關(guān)注本系列的朋友表示感謝...
在前面幾個(gè)章節(jié),我們逐漸為 Vim 配置了語(yǔ)法高亮瞎惫、代碼的跳轉(zhuǎn)和自動(dòng)補(bǔ)全功能×锔現(xiàn)在的 Vim 已經(jīng)可以作為代碼編輯器來(lái)使用了译株。但是想將它作為日常發(fā)開(kāi)的主力編輯器來(lái)用還需要很長(zhǎng)...
我們之前介紹過(guò)縮寫相關(guān)的內(nèi)容,縮寫是可以自動(dòng)幫我們將縮寫的單詞展開(kāi)成一段完整的話挺益。但是代碼本身是結(jié)構(gòu)話的歉糜,僅僅使用縮寫來(lái)配置是無(wú)法完成自動(dòng)生成代碼這個(gè)步驟的。好在我們大量的插...
之前我們通過(guò)幾個(gè)實(shí)例演示如何配置其他語(yǔ)言的lsp服務(wù)望众,相信各位小伙伴碰到其他的編程語(yǔ)言也能熟練的配置它對(duì)應(yīng)的lsp服務(wù)匪补。本篇講作為一個(gè)補(bǔ)充,我們來(lái)優(yōu)化一下LSP 相關(guān)的顯示 ...
從9月份到國(guó)慶這段時(shí)間烂翰,因?yàn)榈昧伺畠汉蝗保谑腔乩霞規(guī)兔α侠砑沂乱约芭惆槔掀藕团畠骸R粫r(shí)之間無(wú)暇顧及該系列教程的更新甘耿。等我回來(lái)的時(shí)候發(fā)現(xiàn)很多小伙伴私信我催更踊兜。在這里向支持本人這一...
neovim 自帶的代碼補(bǔ)全的效果并不好,而且它分為好多類佳恬,如果需要人為的去判斷使用路徑補(bǔ)全润文、使用當(dāng)前buffer中的單詞補(bǔ)全、亦或者使用include 來(lái)進(jìn)行補(bǔ)全殿怜,那樣使用...
上一章典蝌,我們初步認(rèn)識(shí)了lsp,并且對(duì) nvim-treesitter插件進(jìn)行了配置头谜,為編輯器提供了代碼著色骏掀、自動(dòng)格式化以及增量選中功能。算是初步體驗(yàn)了 lsp的相關(guān)功能柱告。從這...
截止到上一篇文章截驮,我們配置了neovim的很多內(nèi)容了。具備了一些編輯器的常用功能了际度,而且可以勝任日常的文檔編輯工作了葵袭。但是想作為一個(gè)可靠的代碼編輯器還缺少重要的一環(huán),即代碼語(yǔ)...