Homoiconic C
一种用于代码和数据的通用语言。
介绍
Homoiconic C (HC)是用于代码和数据的单一通用语言。这个单子包含 第一个用TypeScript编写的HC解释器实现 在 Deno。
该存储库包括以下几个包:
- @swanfactory / hclang -核心库 发布到JSR
- CLI -交互式REPL和命令行工具
- MAML - 多用途抽象标记语言, 一个非常简单的提议来取代web技术(HTML, CSS, JavaScript, SVG)和基于HC的单一格式
- 网络 - Web组件和Fresh框架集成
HC还可以用于定义其他通用文件的易于解析的变体 格式(例如,HCSV, HCSON)。
快速启动
在网上试试
访问 天鹅工厂HC游乐场
直接在浏览器中尝试HC,无需安装。对于离线
使用,下载
hcweb.html 来自最新版本
然后在浏览器中打开它。
作为库使用
# Deno
deno add jsr:@swanfactory/hclang
# Node.js/npm
npx jsr add @swanfactory/hclang
然后在你的代码中:
import { execute } from "@swanfactory/hclang";
const result = execute("1 + 1");
console.log(result); // Output: '2'
看到 库文件 更多的 细节。
运行命令行
对于Node.js 24或更新版本,直接从npm运行当前的CLI。迪诺不是 要求:
# Interactive REPL
npx hclang@latest
# Evaluate a file
npx hclang@latest path/to/program.hc
# Verify executable examples in an HC document
npx hclang@latest path/to/examples.hc --testdoc
从资料来源:
git clone https://github.com/TheSwanFactory/hclang.git
cd hclang
deno task hc
这将启动交互式HC解释器。
运行测试
deno task test
用法
可用的任务
根 deno.json 提供了几个任务:
| 任务 | 描述 |
|---|---|
deno task hc | 启动HC REPL |
deno task setup | 安装预提交挂钩 |
deno task test | 检查格式和lint,然后运行所有测试 |
deno task fix | 格式化源代码并应用lint修复 |
deno task test:cli | 测试命令行包 |
deno task test:lib | 测试库包 |
deno task test:maml | 测试MAML包 |
deno task test:web | 测试网页包 |
deno task test:bs | 测试BitScheme文档 |
deno task test:doc | 测试HC文档示例 |
deno task build | 构建原生构件、npm构件和web构件 |
deno task build:npm | 中生成Node.js CLI包 dist/npm |
deno task test:npm | 打包并对CLI包进行冒烟测试 npx |
BitScheme
BitScheme 专门的脚本语言是什么 声明式解析、操作和生成二进制数据。它包括 可测试的可执行文档:
deno task test:bs
这将运行BitScheme解释器在它自己的文档中,执行embedded 代码示例和验证输出。
调试模式
打开详细调试输出:
export DEBUG=true
deno task hc
发展
设置
-
克隆的 GitHub库:
git clone https://github.com/TheSwanFactory/hclang.git cd hclang -
安装 Deno:
# macOS brew install deno # Other platforms: see https://deno.land/ -
(可选)安装 未雨绸缪 用于自动编码 质量检查:
# macOS brew install pre-commit # Other platforms: pip install pre-commit显式地安装预提交钩子
deno task setup。 -
运行测试:
deno task test这会检查格式和lint,而不固定源,然后运行测试 套件。使用
deno task fix格式化和应用lint修复。deno task bundle:check检查捆绑的HC源而不重写它们; 后编辑hc/*.hc,用deno task bundle:embed。
项目结构
这是一个Deno工作空间(monorepo),包含以下包:
hclang/
├── cli/ # HC command-line interface & REPL
├── lib/ # Core library (published to JSR)
├── maml/ # MAML markup language
├── web/ # Web components
├── doc/ # Documentation and papers
└── deno.json # Workspace root configuration
VS Code扩展
针对HC的VS Code扩展现在包含在这个存储库中 vscode-extension /. 它提供了全面的语法 突出显示基于完整语法的所有HC语言功能 规范。
安装:
# Install from source
deno task vscode:install
# Or package for distribution
deno task vscode:package
# Or publish to marketplace
deno task vscode:publish
扩展可以识别 .hc 文件和提供:
- 所有HC元素(数字、字符串、标识符、 运营商等)
- 智能支架匹配
{},[],() - 看起来很对
- 注释切换
#
注意: 旧的单机 language-hclang 存储库 现在已弃用,取而代之的是这个集成扩展。
出版
对于发布新版本的维护者:
-
确保所有测试通过:
deno task test -
到处更新版本:
deno task bump这个更新
deno.json,lib/version.ts,以及所有工作空间包 版本,然后提交更改。 -
将PR合并到
master分支。GitHub Actions比较
deno.json使用之前的版本 合并。当版本更改时,它将库发布到 JSR,公布了hclangTarball锻炼到npx,并创建一个GitHub Release标记为v<version>与生成的笔记。每个注册表都是独立检查的,所以 重新运行恢复部分发布,而不是重新尝试不完整的版本 已经不可改变的。没有版本冲突的合并不会发布或创建 释放;无需手动标记。经过测试的web版本也部署到GitHub Pages上。CI验证live 版本并在部署后在浏览器中评估HC;每日可用性 Workflow在发布之间检查公共演示。看到 Web发布设置。
NPM发布运行在受保护的
npm-publishGitHub环境下使用的 公众信赖的出版商hclang包中。它的npm设置必须 授权TheSwanFactory/hclang库,.github/workflows/deno.js.yml,npm-publish环境和直接npm publish在合并发布包之前。构建/PR作业没有OIDC 令牌的许可。
链接
- JSR包: @swanfactory / hclang
- 文档: JSR文档
- GitHub: TheSwanFactory / hclang
- 博客: 同质C介绍
- MAML: HTML6提议
许可证
麻省理工学院