C 編寫乙個直譯器

2021-09-29 20:22:59 字數 2575 閱讀 5625

一直想知道如何編寫一門指令碼語言,現在終於有機會實現了。非常感謝 thorsten ball 的大作:writing an interpreter in go 幫助我實現了這個想法!

可能你比較好奇為啥這個專案叫 autumn,因為剛好這個專案是在國慶節開始的,正好是秋天,就以當時的季節命名了。

c++ 是一門非常靈活的語言,正好趁這個小專案,我可以天馬行空的實現我的各種想法,應用到工程裡。

是的,你還可以做的更多!

因為這個專案用到了一些 c++17 的特性,所以你得安裝支援 c++17 的編譯器,這裡直接公升級到 gcc8 就行了。

# centos

$ yum install readline-devel.x86_64

$ yum install -y devtoolset-8-toolchain

$ scl enable devtoolset-8 bash

# ubuntu

$ sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test

$ sudo apt-get update -qq

$ sudo apt-get install -qq g++-8

$ apt-get install lib64readline-dev

$ export cxx="g++-8"

$ export cc="gcc-8"

$ make
$ ./autumn eval
然後你就可以在控制台編寫一些命令或函式啦!

let map =

fn(arr, f)

else};

iter

(arr,

);};

// 壓縮成一行的

// 壓縮成一行的

}// 一行版本

編寫乙個c 工程

c 接觸的很少,之前也只是會編寫乙個簡單的cpp檔案,但乙個工程的實現,往往不僅包括原始檔 cpp字尾檔案 一般還有標頭檔案 h字尾檔案 等。乙個c 工程中只能有乙個main函式,這個函式所在的檔案類似於前端中的入口檔案,即從main函式開始執行整個工程。即有多個cpp檔案,這些檔案中也只有乙個入口...

使用C 編寫乙個計時器 原創

public time int hours,int minutes,int seconds public void sethours int hours public void setminutes int minutes public void setseconds int seconds pub...

C語言 編寫乙個日曆

題目 列印乙個月份的日曆。分析 首先列印乙個月份的日曆,要設定乙個基準年,並且要知道這一年的一月一號是週幾 求得當年的一月一號是週幾 在求得當月的第一天是週幾。define crt secure no warnings 1 include include 某個月的日曆 int months 2 13...