# @aster-cloud/aster-lang-ts 中文文档

规范地址：https://npmcn.com/package/%40aster-cloud/aster-lang-ts/

版本：1\.3\.0
npm 元数据更新时间：2026-11-06T12:35:29.017Z
中文译文更新时间：2026-11-07T00:43:49.842Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aster-cloud/aster-lang-ts
原文对照：https://npmcn.com/package/%40aster-cloud/aster-lang-ts/?lang=original
项目主页：https://aster-lang.cloud/
源码仓库：https://github.com/aster-cloud/aster-lang-ts

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：8.5 MB，2077 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：3 个
- peer 依赖：cac ^6\.7\.14，ora ^9\.0\.0，tar ^7\.5\.8，p-limit ^7\.2\.0，vscode-languageserver ^9\.0\.1，vscode-languageserver-types ^3\.17\.5，vscode-languageserver-textdocument ^1\.0\.12
- 首次发布：2026-01-11T10:19:37.989Z
- 最新版本发布：2026-11-06T12:35:28.674Z
- 近 30 天下载量：3195（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：80（近 12 个月 80 个）

## 中文简介

Aster CNL (控制自然语言) TypeScript 编译器 - Lexer, Parser, AST, Core IR, 类型检查器

## 安装

```sh
npm install @aster-cloud/aster-lang-ts
```

也可以使用：`pnpm add @aster-cloud/aster-lang-ts`、`yarn add @aster-cloud/aster-lang-ts`、`bun add @aster-cloud/aster-lang-ts`

## README

# Aster Lang 类型脚本编译器

[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://npmcn.com/package/%40aster-cloud/aster-lang-ts/LICENSE)

TypeScript 执行 Aster CNL(控制自然语言)编译器管道.

## 概览

Aster是一种实用,类型安全的语言,有人可读可控的自然语言语法. 此软件包提供了纯 TypeScript 编译器基础设施 :

-   **发光器**: 规范 CNL 源代码
-   **莱克瑟**: 有多语言词汇支持的tokenizes source
-   **解析器**: 从符号流生成 AST
-   **核心IR点**: 中级代表
-   **类型检查器**:静态类型分析
-   **LSP 服务器**: 语言服务器协议执行

## 安装

```bash
pnpm install @aster-cloud/aster-lang-ts
```

## 快速启动

```typescript
import { parseSource, resolveAndLowerChecked } from '@aster-cloud/aster-lang-ts';

// Compile pipeline: canonicalize → lex → parse → name resolution (R1) → lower → name resolution (R2)
const source = `
Module greeting.

Rule greet given name, produce:
  Return Text.concat("Hello, ", name).
`;

const { ast } = parseSource(source);
// Throws NameResolutionError (E8xx diagnostics) instead of returning Core with unresolved names
const { core, diagnostics } = resolveAndLowerChecked(ast);
```

原始降压( E)`lowerModule`和不受约束 `resolveAndLower` 内部不导出 : 每条通往 Core IR 的公用路径都会运行名称解析度并拒绝在解析度错误上发出IR. 使用 `compile` 编号 : `compileAndTypecheck` 从 `@aster-cloud/aster-lang-ts/browser`, (中文(简体) ), `resolveAndLowerChecked`,或 `resolvePolicyTypes`。 。 。 .

## 多语言支持

Aster支持用多种自然语言写作政策:

```typescript
import { canonicalize, lex, parse } from '@aster-cloud/aster-lang-ts';
import { ZH_CN } from '@aster-cloud/aster-lang-ts/lexicons/zh-CN';

const zhSource = `
模块 问候。

规则 问候 给定 姓名，产出：
  返回「你好，」 加 姓名。
`;

const tokens = lex(canonicalize(zhSource, ZH_CN), ZH_CN);
const ast = parse(tokens);
```

支持的语言 :

-   英语( en- US) - 默认
-   简化中文 (zh-CN)
-   德语( de-DE)

## 当前 CNL 样式

-   类型推论是默认的;实例会避免明显的类型说明.
-   接线员呼叫链被移除. 使用标准调用或内插操作符.
-   语句以句号结尾,而块头以结肠结尾.

## 文档

-   `docs/overview.md`
-   `docs/cnl-syntax.md`
-   `docs/type-inference.md`
-   `docs/operator-call.md`
-   `docs/examples.md`
-   `docs/contributing.md`
-   本地化文件 :
-   英语( 默认): 上面的同名列表.
-   简体中文: `docs/zh/overview.md`, (中文(简体) ), `docs/zh/cnl-syntax.md`, (中文(简体) ), `docs/zh/type-inference.md`, (中文(简体) ), `docs/zh/operator-call.md`, (中文(简体) ), `docs/zh/examples.md`, (中文(简体) ), `docs/zh/contributing.md`
-   德意志: `docs/de/overview.md`, (中文(简体) ), `docs/de/cnl-syntax.md`, (中文(简体) ), `docs/de/type-inference.md`, (中文(简体) ), `docs/de/operator-call.md`, (中文(简体) ), `docs/de/examples.md`, (中文(简体) ), `docs/de/contributing.md`

## 发展

```bash
# Install dependencies
pnpm install

# Build
pnpm build

# Run tests
pnpm test:unit

# Start LSP server
pnpm lsp

# REPL
pnpm repl
```

## 项目结构

```
src/
  ├── canonicalizer.ts    # Source normalization
  ├── lexer.ts            # Tokenization
  ├── parser.ts           # AST generation
  ├── ast.ts              # AST definitions
  ├── lower_to_core.ts    # Core IR lowering
  ├── core_ir.ts          # Core IR definitions
  ├── typecheck/          # Type checker
  ├── lsp/                # Language Server Protocol
  └── config/
      └── lexicons/       # Multi-language lexicons
          ├── en-US.ts
          ├── zh-CN.ts
          └── de-DE.ts
```

## API 参考

### 核心出口

| 导出 | 说明 |
| --- | --- |
| `canonicalize(source, lexicon?)` | 规范 CNL 源 |
| `lex(source, lexicon?)` | 切换来源 |
| `parse(tokens)` | 分析到 AST |
| `parseSource(source, lexicon?, scopes?)` | 分类、标记和剖析 |
| `resolveAndLowerChecked(ast, scopes?)` | 名称分辨率+降低到核心IR; 抛出 `NameResolutionError` 关于 E8xx 的 |
| `resolvePolicyTypes(source, options)` | 以原始拼写方式解析数据/ Enum 声明 |
| `typecheck(module)` | 类型检查模块 |

### 语法导出

```typescript
import { EN_US } from '@aster-cloud/aster-lang-ts/lexicons/en-US';
import { ZH_CN } from '@aster-cloud/aster-lang-ts/lexicons/zh-CN';
import { DE_DE } from '@aster-cloud/aster-lang-ts/lexicons/de-DE';
```

## 许可证

麻省理工学院

## 常见问题

### @aster-cloud/aster-lang-ts 是什么？

Aster CNL \(控制自然语言\) TypeScript 编译器 - Lexer, Parser, AST, Core IR, 类型检查器

### 如何安装 @aster-cloud/aster-lang-ts？

在项目目录运行 npm install @aster-cloud/aster-lang-ts，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 aster、aster-lsp、aster-core、aster-convert，可以用 npx aster 直接运行。

### @aster-cloud/aster-lang-ts 支持 TypeScript 吗？

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

### @aster-cloud/aster-lang-ts 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @aster-cloud/aster-lang-ts 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aster-cloud/aster-lang-ts 可以商用吗？

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

### @aster-cloud/aster-lang-ts 的下载量有多少？

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

### @aster-cloud/aster-lang-ts 还在维护吗？

最新版本 1\.3\.0 发布于 2026/11/06（1 天前）；至今共发布 80 个版本，其中过去 12 个月发布了 80 个；首次发布于 2026/01/11。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

