Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled
- break:parser 新增 _isInMatchCase(解析 case body 期间置位,与 _isInLoop 同法),_parseBreakStatement 判据放宽为 !_isInLoop && !_isInMatchCase,不再误报 breakOutsideLoop - fallthrough:新增 ParseNodeType.Fallthrough / FallthroughNode;作为软关键字仅在「viper 方言 + case 体内 + 独占简单语句」时成立,其它位置仍是普通标识符 - 同步 parseTreeWalker 两处 switch 与 visitor、parseNodeUtils 的 ParseNodeTypeMap、binder 流程终止、flowChartBuilder 终止语句、completion 关键字、TextMate 高亮 - 测试 viperMatchBreakFallthrough.test.ts(2 用例),全量 jest 825 -> 827 通过
Vipeye
Vipeye 是面向 Viper 语言的 VS Code 扩展,提供完整的语言服务支持。
Viper 是一门基于 CPython 语法的 AOT 静态类型语言(编译器为 TransPyC / TPV),与 Python 的语义完全不同。Vipeye 在 Pyright 基础上深度改造而来,现已全面切换为 Viper 语义。
功能特性
- 语法高亮:
.vp/.vpi文件的完整 Viper 语法高亮(关键字、类型、装饰器@、f-string、常量、未定义符号等语义化区分) - 语义高亮:基于 LSP 3.16 SemanticTokens 协议,区分已定义/未定义符号、类/函数/变量/模块/参数/常量
- 类型检查与诊断:遵循 Viper 语义的类型推断与静态检查
- 指针语义:
CPtr/CArray(数组名退化、形参调整)、指针隐式转换规则(级数须相同且 pointee 兼容:void*双向放行、基本类型按自身规则、结构体仅允许上转型) - 声明/注解修饰符:
const/volatile类型描述符、static(C internal linkage,禁止跨模块取参)、export/extern变量(extern不允许初始值)、virtual/novirtual、__attribute__(...)(装饰器与注解修饰器两种写法) virtual class方法槽赋值:obj.method = func按 vtable 槽语义校验(self 为泛指针或该类/父类指针,其余签名相同)[SIZE]T定长数组类型、typedef T1 = T2、C 风格强转(T)x/(T*)x/(T*)(x)/T*(x)- 类型别名与 C 类型系统:
t.CInt/t.CTypedef/t.CDefine/t.CEnum等 - Viper 特有的
T | t.CPtr指针折叠表示 - 全局变量访问规则(读/写/global 声明判定)
- 指针语义:
- 项目支持:
.vpj项目配置文件、viperconfig.json配置 - 代码补全与悬停信息(
__attribute__(...)括号内可直接补全/悬停查看可用属性名) - 状态栏分析进度:分析期间显示当前文件与
N / M进度;viper.countLines命令可统计.vpj项目的代码行数(KPI、分语言图表、明细表) - 导航:定义跳转、查找引用、重命名
项目架构
vscode-vipeye:LSP 客户端扩展(本包,已集成 Viper 核心)vipeye:Viper 语言命令行类型检查器(pyright 命令行工具改造)vipeye-internal:核心分析引擎(类型推断、语义高亮、诊断)vipeye-typeserver:类型服务进程viper(packages/viper):Viper 核心源码库(侧边栏活动栏 Project/Toolchain/Settings、.vpj 项目管理、工具链),源码单一,由本包构建时引用打包,不单独发布
配置
在 .vscode/settings.json 或 viperconfig.json 中配置:
{
"viper.analysis.typeCheckingMode": "standard",
"viper.analysis.extraPaths": ["d:/path/to/includes"],
"viper.analysis.diagnosticSeverityOverrides": {
"reportMissingImports": "warning"
}
}
License
MIT