原创 lang:自制編程語言11——if-elif-else

前言 前面做起來挺快的!接下來這個可能要花一週的時間了!需要構造一顆語義樹,用來控制解釋語句的順序! 分割語句 主要就只有兩種語句,一是普通的語句,二是在 if() 中的語句。下面規定 設置一個小括號計數器,初始化零,遇到左括

原创 lang:自制編程語言13——teach

前言 Suatin編程語言項目——一款簡單的直譯型解釋器By Demllie,2020,3,19 今天剛剛完成了for循環,現在while,do-until,for三種循環和if-elif-else分支都實現了 Suatin這個項

原创 lang:自制編程語言10——改進賦值

前言 賦值節點的interpret接口、interpet_str接口、interpret_bool接口不是並列的關係…… 這個自制編程語言的項目中,已經遇到太多的不對稱的東西了,明明是相似的接口,相似的類型,但是實現卻特別冗餘!

原创 lang:自制編程語言15——break&continue

前言 上一篇增加了一個 assert 關鍵字,這一篇增加兩個關鍵字,break,continue。有了這兩個關鍵字後,循環就方便多了。 將assert/break/continue修改成語句 之前這個三個關鍵字後面是不跟分號

原创 [kic]語言定義,kic是C語言的子集

前言 本來想看《自制編程語言,基於C語言》,但是沒有拿到手的電子書只有目錄和兩個章節,所以只能看《自己動手製作編譯器、鏈接器》。這本書聽說有些bug,其實無所謂了,一般的書上都找的出問題,就算是“大國重器”的教材書中也有打印錯誤。

原创 lang:計算器

前言 目前這個計算器還存在的問題:數字只能是單個整數、只能進行加減乘除、取餘、乘方的操作! 計算器是什麼?輸入2+3X1,會得到5的結果。這也是在做字符串識別,同樣涉及編譯原理的知識。先算2+3,還是先算3X1,這需要判斷優先級!

原创 lang:自制編程語言2——Concrete Syntax Tree

前言 之前的文章 lang:談談自制編程語言 lang:C++自定義異常類——用來處理自制編程語言的異常信息 lang:計算器改進版本_默認函數_小數_指數 lang:計算器 lang:使用BNF範式設計一個文法 lang:總結9

原创 2020年寒假?(不)認真學習《自制編程語言,基於C語言》第一個Demo,詞法分析

前言 這本書的sparrow(麻雀)語言,基於wren(鷦鷯)語言,是一門面向對象語言!——至於其他特點我忘了,還記得的就是Demo中部分函數命名很簡單、簡單到與其他庫函數產生衝突了。。。。 幾個月前寫(抄)的項目,後面的語法分析

原创 編譯原理複習,掌握自動機

前言 自動機就是作用在詞法分析中的識別器,都是一個一個符號進行處理的,輸入的是符號串,輸出的是單詞串!之前做自制語言suatin時直接交給正則了,這次自制語言要自己動手做詞法分析器了 有限狀態自動機是實現詞法分析的一種方式,根據《

原创 下一版本編程語言Dem應該具有的功能

前言 關於自制的編程語言的設計,我已經在lang:使用BNF範式設計一個文法、lang:總結9種編程語言的語法來設計自己的編程語言Suatin-lang、lang:談談自制編程語言1 這幾篇中,寫下了諸多矛盾的要求。單單看語句結尾

原创 lang:自制編程語言9——重寫表達式分類機制 + 改進異常機制

前言 [ 落後的分類機制如下!] 之前區分不同種類的語句(賦值與非賦值、計算與字符串、判斷式、邏輯式)是靠下面幾個標誌區分的!!! exprType 表達式種類(種類有 NumberCalculate五則計算、StringC

原创 Java:關於Scanner在eclipse運行不了的問題

也不知道設置了什麼,eclipse重裝也沒用,我一開始的eclipse版本是Luna Release (4.4.0) 只有Scanner創建對象放在main後就會這樣,如果在Scanner創建對象前輸出一下就沒問題了。 換個最新的

原创 自制編程語言應該按編譯原理來嗎?

最近一直在休息,休息的間隙上上課,做做項目。越來越難、越來越懶,晚上睡覺的慾望越來越少。我想着,我爲什麼要睡覺呢?可是不睡覺晚上能幹什麼呢?後半夜的大腦雖然還想到處“沾花惹草”,但是那是愚笨的,只想搜刮些能提神的信息,一旦我想去處

原创 lang:自制編程語言6——語法樹引入邏輯運算和關鍵字方法

前言 三千行代碼,寫了個寂寞。 做了這麼幾個項目,一直都在操作語法樹,我也不知道怎樣才寫的好,之前的任務都完成了是因爲複雜的我都跳過了(汗)多虧了VS的調試很強大,懂得使用SHIFT+F9的才能熟練掌握C++內存管理(誤)。 之前

原创 lang:自制編程語言16——變量棧

前言 完善一些細節,爲最後一個function的功能添磚加瓦。實現了局部變量後,還有實現變量的local聲明、const聲明…… 命名行運行suatin.exe E:\ 的目錄 2020/03/04 23:14 <D