@1c-syntax/codemirror-lang-bsl

中文文档
0.3.2发布于 2026/07/18MITTypeScriptESM + CJS构建来源已验证近 30 天下载 4882

1C: CodeMiror 6 的 Enterprise / OneScript (BSL) 语言支持

中文使用文档
文档目录13 节
  1. 现场演示
  2. 安装
  3. 使用量
  4. 盖上什么
  5. 上游参考文献
  6. 限制
  7. 构建测试( T)
  8. 演示
  9. 出版发行
  10. 设置( 一次性)
  11. 切开释放
  12. 切割前干燥
  13. 许可证

@ 1c- syntax/ codemirror- lang- bsl 语法

npm CI License: MIT

代码 6 语言支持软件包 1C:企业(BSL) 财务报告和审定财务报表 一个脚本 俄语和英语关键词语法, 预处理器指令、汇编说明、多行字符串字元, 和嵌入式查询语言(SDBL)在字符串文字中.

现场演示

https://1c-syntax.github.io/codemirror-lang-bsl/ (中文(简体) ) ——两个相接 CodeMiror 6编辑器:一个带有BSL模块样本(程序有注释, 控制流量、 async 函数、 区域), 具有查询函数的函数 字符串正文由嵌入式的SDBL语法突出出. 添加 ?theme=light 改为 用于光线主题的 URL.

API 引用( 来源于 JSDoc with TypeDoc): https://1c-syntax.github.io/codemirror-lang-bsl/api/ (中文(简体) )。 。 。 .

语法在 勒泽,参考文献 页:1 1c-syntax/bsl-parser ANTLR 4号卫星 结构和结构的语法 1c-syntax/vsc-language-1c-bsl 用于符号样式映射的文本Mate语法.

安装

npm install @1c-syntax/codemirror-lang-bsl

使用量

import {EditorView, basicSetup} from "codemirror"
import {bsl} from "@1c-syntax/codemirror-lang-bsl"

new EditorView({
  doc: 'Процедура Привет() Экспорт\n    Сообщить("Привет, мир!");\nКонецПроцедуры',
  extensions: [basicSetup, bsl()],
  parent: document.body
})

盖上什么

  • 模块层面:可变申报Перем编号 :Var程序/职能 声明 Экспорт,默认参数和 Знач编号 :Val编辑 修改 АСИНХ
  • 控制流量 : Если编号 :ИначеЕсли编号 :Иначе编号 :КонецЕсли, (中文(简体) ), Пока编号 :КонецЦикла, (中文(简体) ), Для … По … Цикл编号 :КонецЦикла, (中文(简体) ), Для Каждого … Из编号 :КонецЦикла, (中文(简体) ), Попытка编号 :Исключение编号 :КонецПопытки
  • 发言: Возврат编号 :Продолжить编号 :Прервать编号 :Перейти,标签 ~Метка:, (中文(简体) ), Ждать 作为独立的声明和表达, ВызватьИсключение, (中文(简体) ), Выполнить, (中文(简体) ), ДобавитьОбработчик编号 :УдалитьОбработчик
  • 表达式:数字字元,字符串字元(单行和多行) 与 | 续),日期文字 'YYYYMMDDHHMMSS', (中文(简体) ), 布尔 Истина编号 :Ложь, (中文(简体) ), Неопределено, (中文(简体) ), Null, (中文(简体) ), Новый,毒性 ?(…)
  • 运算符:算术、比较、逻辑(И编号 :Или编号 :Не(中文(简体) )
  • 说明: &НаКлиенте, (中文(简体) ), &НаСервере, (中文(简体) ), &НаКлиентеНаСервереБезКонтекста,, , , , , , , , 包括注释参数
  • 预处理器 : #Если编号 :#ИначеЕсли编号 :#Иначе编号 :#КонецЕсли, (中文(简体) ), #Область编号 :#КонецОбласти, (中文(简体) ), #Использовать, (中文(简体) ), #native
  • 评论: // (单行), /// (BSLDEscription doc-committees) (英语:BSLDEscription)
  • 安全数据库 (BSL查询语言) 嵌入在查询字符串中 —— 说 一个单独的列泽语法,涵盖100+个关键词(声明/操作符 /) 函数 / 类型/ 元数据对象/ 虚拟表格类别) 已挂载 作为覆盖到任何开始的字符串文字 ВЫБРАТЬ编号 :SELECT编号 : УНИЧТОЖИТЬ编号 :DROP。俄语和英语关键词变体都是 认识和风格都一样.

上游参考文献

语法和样式映射来源于以下 1c 语法 项目。 当更新此软件包时, diff 与记录的 捕捉语法在上游变化.

项目用于已绑定的标记
1c-syntax/bsl-parserLexer/parser结构(BSL + SDBL ANTR4语法)a30f8169885836226208041fbc41001bd64d710ev0.34.1
1c-syntax/vsc-language-1c-bslTextMate 范围参考文献 (1c.tmLanguage.json, (中文(简体) ), 1c-query.tmLanguage.json(中文(简体) )30e6c7994a2ee745c92fa0238fa2e81c78d4781dv1.33.1
1c-syntax/bsl-language-server语义-token → LSP 符号类型映射(SemanticTokensProvider, (中文(简体) ), *SemanticTokensSupplier)——被困于活跃分子 develop 分支, 不是最新发布的be49fcbf45d082a1db15504b51a551f6a55183c0 (单位:千美元)develop(中文(简体) )最新发布时间 : v0.29.0

上游变化后重新同步: 上方表格,重放上游 diff 相对 src/bsl.grammar 财务报告和审定财务报表 src/index.ts (样式Tags),并添加回归测试 test/cases.txt。 。 。 .

限制

少数故意的简化,主要是保留LR语法 无歧义:

  • 上下文敏感的预处理器标识符 . #Если编号 :#Иначе编号 : #КонецЕсли编号 :#Тогда编号 :#И编号 :#Или编号 :#Не 重用相应的 BSL 关键字 术语——样式Tags通过父选择者对其进行歧视. 其余部分 预处理器唯一的单词( q)Область, (中文(简体) ), КонецОбласти, (中文(简体) ), Использовать, (中文(简体) ), native, (中文(简体) ), Удаление编号 :КонецУдаления, (中文(简体) ), Вставка编号 :КонецВставки已经 专门化全球; 如果您在外部使用一个普通标识符 # 上下文,将标记为预处理器符号。 BSL 公约 在实践中不与这些名字相冲突.
  • 调用参数中的逗号 (单位:千美元)Метод(a,,b) 或者说 Метод(,a))为 不支持 – 建模 , 作为独立项目与内部冲突 f(g(...)) 在 LR(1) 中解析,没有自定义的外部标识器。 全体 参数必须是非空表达式。 感染者约为1%至2% 现实世界 BSL.
  • 多行字符串不能包含嵌入式预处理器指令. 美国人的 multilineString : STRINGSTART (STRINGPART | BAR | preprocessor)* STRINGTAIL 接受 #Если 内置 a |- 接续字符串; 我们匹配 整个字面作为一个符号。 实践中非常罕见.

对照 ~100 现实世界配置文件验证 (单位:千美元)1c-syntax/bsl-language-server 财务报告和审定财务报表 1c-syntax/vsc-language-1c-bsl 固定装置: 85% 干净, 0 个硬故障,其余的~15%为 故意解析错误测试案例、源级打字,或击中一个 以上三个限制.

超出范围( 推迟到其他工具):

  • 智能/ 完成/ 徘徊—— 属于 bsl-language-server。 。 。 .
  • 复出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相相出相出相出相出相出相.

构建测试( T)

npm install
npm run build   # runs lezer-generator + rollup + tsc
npm test        # mocha against test/cases.txt fixtures

{\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}收押船是公共邮轮 .npmrc 在默认的网络上作贡献 到一个私有镜像(例如公司造型) 仍然从 https://registry.npmjs.org/。需要单独出版 npm login 违反公共登记.

演示

主机版本在 https://1c-syntax.github.io/codemirror-lang-bsl/ (中文(简体) ) 实值 自动部署 .github/workflows/pages.yml 在每次推动 main。要在当地建立演示:

npm install
npm run lint          # ESLint (flat config) on src/, examples/, test/
npm run build         # main library → dist/
npm test              # mocha against test/cases.txt and overlay tests
npm run build:demo    # static demo → docs/{index.html,bundle.js}
npm run build:docs    # TypeDoc API reference → docs/api/
npm run build:site    # demo + docs (CI uses this for gh-pages)
# serve docs/ via any HTTP server, e.g.
python3 -m http.server -d docs 8080

examples/demo.ts 来源; examples/index.html 是 HTML 外壳 滚动配置副本 docs/index.html 和捆绑在一起 bundle.js。 。 。 .

出版发行

通过发布带有表单标签的 GitHub 发布来剪切释放 v<version> (比对) package.json#version) (中文(简体) ). 这个 .github/workflows/publish.yml 工作流程构建、测试和运行 npm publish --provenance --access public 对npmjs.org。 认证 通过 npm 受托出版 - 没有长寿 NPM_TOKEN 需要保密; npm 交换工作流程 OIDC 用于在出版时的短命证书.

设置( 一次性)

  1. https://www.npmjs.com/package/@1c-syntax/codemirror-lang-bsl/ access (中文(简体) ) → 受托出版商 → 添加
  2. 提供者 : GitHub 动作
  3. 仓库拥有者 : 1c-syntax,仓库 : codemirror-lang-bsl
  4. 工作流程文件名称 : publish.yml
  5. 环境: npm

就是这样——没有秘密,没有象征. 工作流程的 id-token: write 权限加 --provenance 足够; npm 验证 OIDC 令牌 对已配置的可信任出版商,并接受上传.

切开释放

  1. 弹出 package.json#version,承诺,推.
  2. https://github.com/1c-syntax/codemirror-lang-bsl/releases/ new (中文(简体) ) → 标签 v<version> (比对) package.json#version页:1 发布。 。 。 .
  3. 这个 Publish to npm 工作流程拾取 release.published 事件, 验证标签 vs 版本、构建、测试和运行 npm publish。 。 。 .

切割前干燥

workflow_dispatch 打开 Publish to npm 接受一个 dry_run 输入。 运行它 在不实际发表的情况下验证认证、构建和沥青球内容.

许可证

麻省理工学院——见 自由主义。 。 。 .

版本与发布记录

@1c-syntax/codemirror-lang-bsl 共发布 5 个版本,首次发布于 2026/05/28;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.2latest2026/07/183 个月前
0.3.12026/05/295 个月前
0.3.02026/05/295 个月前
0.2.12026/05/285 个月前
0.2.02026/05/285 个月前

关于 @1c-syntax/codemirror-lang-bsl 的常见问题

@1c-syntax/codemirror-lang-bsl 是什么?

1C: CodeMiror 6 的 Enterprise / OneScript (BSL) 语言支持

如何安装 @1c-syntax/codemirror-lang-bsl?

在项目目录运行 npm install @1c-syntax/codemirror-lang-bsl,或使用 pnpm add / yarn add / bun add。

@1c-syntax/codemirror-lang-bsl 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@1c-syntax/codemirror-lang-bsl 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@1c-syntax/codemirror-lang-bsl 可以商用吗?

@1c-syntax/codemirror-lang-bsl 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@1c-syntax/codemirror-lang-bsl 的下载量有多少?

根据 npm 官方下载统计,@1c-syntax/codemirror-lang-bsl 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,882 次,日均约 163 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@1c-syntax/codemirror-lang-bsl 还在维护吗?

最新版本 0.3.2 发布于 2026/07/18(3 个月前);至今共发布 5 个版本,其中过去 12 个月发布了 5 个;首次发布于 2026/05/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。