Antlr4實現簡單語言之條件語句

2021-10-13 23:03:28 字數 870 閱讀 8460

本系列之前的文章:

antlr4的分析錯誤處理

antlr4實現數學四則運算

antlr4新增中文變數賦求值,括號,各種問題

antlr4: 修改語法規則更接近普通bnf格式

antlr4實現簡單語言之整數比較表示式

這一步, 實現了最簡單的單條件, 只有"條件為真"時執行單語句. 例如:

變數=1

如果 變數<2 變數=變數×2

變數

返回2

語法規則修改, 將原本的』宣告』拆分出多個規則:

宣告

: 賦值宣告

| 如果宣告

| 求值宣告

| t新行

;如果宣告

: '如果' 表示式 宣告

;賦值宣告

: t變數名 '=' 表示式 t新行

;求值宣告

: 表示式 t新行

;

"定製訪問器"中, 賦值/求值宣告只需修改型別, 新增的"如果宣告"部分(需改名為"條件宣告"之類):

@override

public 節點 visit如果宣告(如果宣告context 上下文)

語法樹節點新增型別:

public class 條件節點 extends 節點
"執行器"的"求值"方法中新增條件節點的處理:

else if (節點 instanceof 條件節點)  else 

}

下面, 需要新增條件語句中對換行以及條件執行多個語句的支援, 需要選擇是用{}還是其他特殊規則決定條件語句範圍.

C語言之堆的簡單操作實現

一 堆的概念 1 定義 如果有乙個關鍵碼的集合k 把它的所有元素按完全二叉樹的順序儲存方式儲存在乙個一維陣列中,並滿足 ki k2i 1 且 ki k2i 2 ki k2i 1 且 ki k2i 2 i 0,1,2 則稱為小堆 或大堆 將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小...

資料結構C語言之單鏈表簡單實現

include stdafx.h include include 定義單鏈表 typedef struct lnodelnode,linklist int tmain int argc,tchar argv void createlinklist linklist l,int n 使頭結點還原到原始...

資料結構C語言之線性表簡單實現

include stdafx.h include include include define list size 100 定義線性表結構 typedef structsqlist int tmain int argc,tchar argv void initlist sqlist l l.leng...