tsl-devkit/lsp-server/test/test_tree_sitter/test/test_variable_declarations.tsf

202 lines
5.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// TSF 变量声明测试代码示例
// 用于测试 var, static, global, const 语法
//================================================================================
// 1. var 声明测试
//================================================================================
// 保留关键字
do := 13;
type := "1234";
in := f2();
class := defff;
delete := +inf;
// 基本声明
var simple;
var withType: integer;
var withInit := 42;
var complete: real := 3.14;
// 多变量声明
var a, b, c;
var x, y, z: integer;
var m, n := 100;
var p, q, r: string := "default";
// 数组类型
var intArray: array of integer;
var stringArray: array of string := null;
var matrix: array of real;
var tensor: array of float;
// 复杂类型名
var list: System.Collections.List;
var dict: System.Collections.Generic.Dictionary_string_int;
var custom: MyNamespace.MyClass.NestedType;
// 复杂初始化器
var fromFunc := getValue();
var fromExpr := (a + b) * c;
var fromArray := array(1, 2, 3, 4, 5);
var fromCall := createObject("param1", 123, true);
//================================================================================
// 2. static 声明测试
//================================================================================
// 基本声明
static counter;
static typed: integer;
static initialized := 0;
static full: string := "static";
// 多变量声明
static s1, s2, s3;
static sx, sy: real;
static sa, sb := 999;
static sp, sq, sr: boolean := false;
// 静态数组
static cache: array of object;
static buffer: array of byte := null;
static lookupTable: array of integer := createTable();
// 复杂类型和初始化
static singleton: MyClass := MyClass.getInstance();
static config: dictionary := loadConfig("app.config");
static handler: EventHandler := lambda(e) { handleEvent(e); };
//================================================================================
// 3. global 声明测试
//================================================================================
// 基本声明
global appConfig;
global settings: object;
global database := null;
global connection: DBConnection := connect();
// 多变量声明
global g1, g2;
global gx, gy, gz: any;
global ga, gb := "global";
global gp, gq: integer := 0;
// 全局数组和集合
global users: array of User;
global cache: dictionary := createDictionary();
global eventQueue: array of Event := array();
// 复杂全局变量
global logger: ILogger := createLogger("app.log");
global threadPool: ThreadPool := ThreadPool(4);
global serviceLocator: ServiceLocator := ServiceLocator.default;
//================================================================================
// 4. const 声明测试
//================================================================================
// 数值常量
const PI = 3.14159265359;
const E = 2.71828;
const MAX_INT: integer = 2147483647;
const MIN_INT: integer = -2147483648;
// 字符串常量
const VERSION = "1.0.0";
const APP_NAME: string = "MyApplication";
const PATH_SEPARATOR = "/";
const EMPTY = "";
// 布尔常量
const DEBUG = true;
const RELEASE: boolean = false;
const ENABLED = true;
// 表达式常量
const BUFFER_SIZE = 1024 * 8;
const TIMEOUT = 60 * 1000;
const MASK = 0xFF;
const COMBINED = "Hello" $ " " $ "World";
// 特殊值常量
const NULL_VALUE = null;
const DEFAULT_PORT = 8080;
const MAX_RETRIES: integer = 3;
//================================================================================
// 5. 混合声明测试
//================================================================================
// 同一作用域内的多种声明
var localVar: integer;
static sharedStatic := 0;
global globalResource: Resource;
const CONFIG_FILE = "config.json";
// 连续声明
var v1; var v2; var v3;
static s1; static s2;
global g1; global g2;
const C1 = 1; const C2 = 2;
//================================================================================
// 6. 特殊字符和命名测试
//================================================================================
// 下划线开头
var _private;
static __internal: integer;
const _CONSTANT = 100;
// 数字结尾
var var1, var2, var3;
static counter_2024;
global data_123: array of integer;
const VERSION_2 = "2.0";
// Unicode标识符如果支持
var 变量: string;
static 静态变量 := 0;
global 全局设置: dictionary;
const 常量值 = "中文";
//================================================================================
// 7. 边界和错误情况(这些应该导致解析错误)
//================================================================================
// 以下是故意的错误示例,用于测试错误处理
// var x = 10; // 错误:应该使用 :=
// const C := 5; // 错误const应该使用 =
// const EMPTY_CONST; // 错误const必须有值
// var ; // 错误:缺少标识符
// var x: integer // 错误:缺少分号
//================================================================================
// 8. 格式化和空白测试
//================================================================================
// 紧凑格式
var a,b,c:integer:=0;
static x,y:real;
global m:string:="test";
const K=999;
// 宽松格式
var spaced , names : type := value ;
static wide : integer ;
global lots , of , spaces ;
const SPACEY = "value" ;
// 多行格式
var
multiline,
declaration,
test: integer
:= 0;
//================================================================================
// 测试结束
//================================================================================