@@ -143,10 +143,13 @@ local global = 10 -- 'global' 作为变量名
143143
1441442 . ** parseGlobal 函数** (约第 3123 行,新增)
145145 - 完整实现了三种 global 语法的解析
146+ - 支持初始化赋值:` global x = 10 `
146147 - 处理属性(attrib)的解析和关联
147- - 支持多变量声明的解析
148+ - 支持多变量声明的解析:` global a, b, c = 1, 2, 3 `
149+ - 检查 global 不能有 close 属性
150+ - 使用 parseMultiVars 处理初始化赋值
148151
149- 3 . ** parseAction 函数** (约第 4044 行)
152+ 3 . ** parseAction 函数** (约第 4117 行)
150153 - 添加了 global 关键字的分发逻辑
151154 - 使用 ` isKeyWord ` 检查确保版本正确性
152155
@@ -160,25 +163,55 @@ global function myGlobalFunction()
160163 return 42
161164end
162165
163- -- 示例 2: 声明全局变量
166+ -- 示例 2: 声明全局变量(无初始化)
164167global x
165168
166- -- 示例 3: 声明带常量属性的全局变量
169+ -- 示例 3: 声明并初始化全局变量
170+ global y = 100
171+
172+ -- 示例 4: 声明带常量属性的全局变量
167173global <const> PI = 3.14159
168174
169- -- 示例 4 : 声明多个全局变量
175+ -- 示例 5 : 声明多个全局变量
170176global width , height , depth
171177
172- -- 示例 5: 声明带不同属性的多个全局变量
173- global <const> MAX_SIZE , <close> file , counter
178+ -- 示例 6: 声明并初始化多个全局变量
179+ global a , b , c = 1 , 2 , 3
180+
181+ -- 示例 7: 声明带不同属性的多个全局变量
182+ global <const> MAX_SIZE = 100 , counter = 0
183+
184+ -- 示例 8: 属性可以在变量名前后
185+ global x <const> , <const> y
174186
175- -- 示例 6 : 声明所有后续变量为全局
187+ -- 示例 9 : 声明所有后续变量为全局(可读写)
176188global *
177- x = 1 -- x 是全局变量
178- y = 2 -- y 是全局变量
189+ x = 1 -- x 自动成为全局变量
190+ y = 2 -- y 自动成为全局变量
179191
180- -- 示例 7: 带属性的全局所有
192+ -- 示例 10: 声明所有后续变量为只读全局
181193global <const> *
194+ print (math.pi ) -- OK,print 和 math 自动为只读
195+ z = 1 -- 错误!z 被声明为只读
196+ ```
197+
198+ ### 错误示例
199+
200+ ``` lua
201+ -- 错误 1: global 不能有 close 属性
202+ global x <close> -- 解析错误!
203+
204+ -- 错误 2: 在隐式 global * 失效的作用域内使用未声明变量
205+ global x
206+ y = 1 -- 错误:y 未声明(需要语义分析支持)
207+
208+ -- 错误 3: 赋值给 const 变量
209+ global <const> PI = 3.14
210+ PI = 3.15 -- 错误:不能赋值给常量(需要语义分析支持)
211+
212+ -- 错误 4: 初始化已存在的全局变量
213+ X = 10
214+ global X = 20 -- 运行时错误:X 已定义(需要语义分析支持)
182215```
183216
184217## 后续工作
0 commit comments