陣列也和變數一樣,需要有直接賦值操作。
其語法如下
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 列...