步骤1:VAR_TEMP 词法+语法支持(token/关键字/VarSection::Temp/保留字放行)+ 测试
This commit is contained in:
@@ -60,6 +60,7 @@ namespace {
|
||||
{"var_output", Tok::VAR_OUTPUT},
|
||||
{"var_global", Tok::VAR_GLOBAL},
|
||||
{"var_external", Tok::VAR_EXTERNAL},
|
||||
{"var_temp", Tok::VAR_TEMP},
|
||||
{"end_var", Tok::END_VAR},
|
||||
// 类型(V2:19 种 IEC 类型)
|
||||
{"bool", Tok::BOOL},
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace {
|
||||
* 用户标识符(详见 Doc/compiler/语法.md)。
|
||||
*/
|
||||
const char* const kForbidden[] = {
|
||||
"var_in_out", "var_temp", "ref", "class", "any",
|
||||
"var_in_out", "ref", "class", "any",
|
||||
"pointer", "interface", "method",
|
||||
};
|
||||
|
||||
@@ -306,8 +306,8 @@ namespace {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 当前 token 是否为五种变量段关键字之一
|
||||
* @return true 为 VAR / VAR_INPUT / VAR_OUTPUT / VAR_GLOBAL / VAR_EXTERNAL
|
||||
* @brief 当前 token 是否为六种变量段关键字之一
|
||||
* @return true 为 VAR / VAR_INPUT / VAR_OUTPUT / VAR_GLOBAL / VAR_EXTERNAL / VAR_TEMP
|
||||
*/
|
||||
bool is_var_section() const {
|
||||
switch (type()) {
|
||||
@@ -316,6 +316,7 @@ namespace {
|
||||
case Tok::VAR_OUTPUT:
|
||||
case Tok::VAR_GLOBAL:
|
||||
case Tok::VAR_EXTERNAL:
|
||||
case Tok::VAR_TEMP:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -358,6 +359,7 @@ namespace {
|
||||
case Tok::VAR_OUTPUT: b->section = VarSection::Output; break;
|
||||
case Tok::VAR_GLOBAL: b->section = VarSection::Global; break;
|
||||
case Tok::VAR_EXTERNAL: b->section = VarSection::External; break;
|
||||
case Tok::VAR_TEMP: b->section = VarSection::Temp; break;
|
||||
default:
|
||||
return fail("expected variable section");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user