SEBOL Language Support for VS Code
面向横河电机(Yokogawa)CENTUM VP SEBOL 的离线语言支持扩展。
当前版本以仓库中的 SEBOL Reference (IM 33J05L20-01EN) 为主要事实来源。保留字、手册目录、4.6 节内置函数签名和语言限制由 scripts/extract-manual.ps1 提取并生成,避免高亮、补全和帮助文档分别维护不同词表。
本扩展使用 VS Code Language API 直接实现语言功能,不是独立 Language Server,也没有使用 LSP 协议。
功能
编辑与显示
- 依据手册第 15 章生成的 197 个保留字高亮和补全
- 字符串、转义字符、两种注释、十六进制数、运算符和续行符高亮
- SEBOL 控制结构缩进、格式化和折叠
- 经过手册文本样例校验的 Snippet
- 功能块、变量、数组、函数、标签、宏和 generic name 文档符号
语言服务
- 上下文补全:
- 标签位置
- subsystem communication data type 位置
- 已知 block model 的数据项
- 当前作用域变量、函数和宏
- Hover:保留字、内置函数、系统常量和用户符号
- 内置函数及用户函数 Signature Help
- 当前文件和工作区索引中的定义、引用、重命名和工作区符号
- Document Highlight、Selection Range 和用户函数 Call Hierarchy
- Quick Fix:未闭合代码块、未定义标签、错误使用 subsystem data type
- 命令:
SEBOL: Search Manual
SEBOL: Rebuild Workspace Index
SEBOL: Lookup Error Code(离线查询手册 13.3/13.4,共 737 项)
静态诊断
当前实现的诊断包括:
- 未闭合字符串
- 重复声明和重复标签
- 使用保留字作为名称
- 普通标识符前 8 字符冲突
- Tag Name 前 16 字符冲突及与普通标识符的前 8 字符冲突
- 把
uinteger、ulong、char4/8/16/32 错当成本地声明类型
char*n 长度、数组维度和常量下标 0
- 控制结构闭合和结束类型不匹配
goto、error、errorsub 目标标签不存在
- 511 字节语句限制
- 行尾悬挂续行符
- 第 16 章中可静态计算的程序、语句、函数、声明数量和 Generic Name 元素上限
- 已建模内置函数的参数数量
semlock / semunlock 的简单配对
诊断均带稳定的 source 和 code,以便测试和 Quick Fix 使用。
安全和限制
本扩展不会:
- 执行 SEBOL/CENTUM 工程代码
- 连接或写入 FCS/HIS
- 下载、运行或在线调试 SFC
- 替代目标 CENTUM 版本的真实编译器
以下能力因缺少外部接口而保留,当前未实现:
- 官方 SEBOL 编译器调用
- 工程数据库中的真实 Tag/Block 实例校验
- FCS/HIS 在线数据和调试
- 下载及运行控制
静态分析仍不是官方编译器。涉及程序下载和现场运行时,必须以目标系统编译结果、工程规范和安全审查为准。
手册搜索
SEBOL: Search Manual 使用生成的章节目录。当所选 XML 手册文件存在于当前工作区时,命令会打开该文件;扩展本身不重新打包完整受版权保护的手册。
配置
{
"sebol.diagnostics.debounceMs": 200,
"sebol.workspaceSymbols.maxResults": 1000
}
开发
需要 Node.js 和 PowerShell。
cd sebol
npm install
npm run generate:manual
npm run generate:assets
npm run check
npm run test:unit
# 安装依赖后可运行 VS Code Extension Host 冒烟测试
npm run test:extension
npm run package
生成流程:
extract-manual.ps1 从本地手册提取保留字、内置函数签名、目录和限制。
generate-assets.js 从结构化数据生成 TextMate Grammar。
check-project.js 校验 JavaScript、JSON 和生成数据。
- 单元测试覆盖词表、Parser、诊断、格式化、Grammar 和 Snippet。
test:extension 在安装 @vscode/test-electron 后启动隔离的 VS Code Extension Host 做 Provider 冒烟测试。
项目结构
src/
extension.js VS Code Provider 和生命周期
document-store.js 按文档版本缓存解析结果
workspace-index.js 增量工作区符号索引
core/
text.js 字符串/注释扫描、逻辑语句和字节计算
parser.js 容错语法模型、符号和作用域
diagnostics.js 手册规则诊断
format.js 格式化和折叠
data/
spec.js 统一语言知识入口
generated/ 从手册生成的数据
scripts/
test/
版本
当前版本:0.5.0。详细变更见 CHANGELOG.md。
License
MIT。手册和 Yokogawa/CENTUM 商标的权利归其各自权利人所有。