自製程式語言 8 語法分析 陣列賦值

2021-10-06 00:09:12 字數 927 閱讀 2377

陣列也和變數一樣,需要有直接賦值操作。

其語法如下

int a[3]=;
這裡主要對大括號裡的內容進行處理,至於個數要到後面就解析的時候處理。

//陣列宣告語句

class arraydeclarestatement :public statement

//陣列型別

token type;

//型別名

std::string typename;

//陣列元素個數

std::vector> elementnums;

//陣列名字

std::string name;

//陣列初始值

std::shared_ptrinitvalue;

~arraydeclarestatement() {}

};

由於陣列不能直接利用賦值語句,所在在陣列宣告語句中新增了新的字段專門用來儲存初始值。

然後新增大括號內容讀取的**。

std::shared_ptrparser::parseunaryexpr()

......

//遇到大括號的時候

else if (gettoken() == tk_lbrace)

if (gettoken() == tk_rbrace)

//吃掉逗號

pushnexttoken();

}return result;

}

這樣就可以識別有大括號的語句了。

再修改一下陣列宣告語法分析函式,新增賦值處理

std::shared_ptrparser::arraydeclare()

return result;

}

這裡

自製程式語言 2 語法分析 變數宣告語句

先從比較簡單的語法解析開始,cscript打算設計成強型別語言,所以所有變數都要先宣告才可以使用。增添了ast樹 class astnode astnode int line,int column line line column column 分析語法後生成中間碼 virtual operand ...

函式式程式設計 Java8語法分析

是一種程式設計模型,把計算機中的運算看做數學中的函式計算,並且避免了狀態及變數的概念 f x 第一種 就是在乙個介面中定義唯一的乙個抽象方法,那麼這個介面就是函式式介面 public inte ce functioninte cedemo 第二種 通過註解的方式 functionalinte ce宣...

LR語法分析器程式設計

include include include include struct code val const char p const char tnt i etf lr分析表列的字元 const int m 9 0表示出錯,s4用4表示。acc用99表示 r2用 2表示 int col char 列...