← 全部工具

Serenabolographic408/HyLex

热度 65 更新于 开发与构建

Generate high-performance lexical analyzers in F# using a hybrid automaton combining DFA speed with NFA flexibility and minimal memory allocation.

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

HyLex: 高性能混合自动机词法分析器生成库

一个使用 F# 编写的轻量级词法分析器生成库。它采用混合自动机架构,结合了 DFA(确定有限自动机)的查询速度与 NFA(非确定有限自动机)的表达灵活性,并针对 .NET 进行了深度的零堆内存分配优化。

---

目录

  • 特性
  • 环境要求
  • 快速开始
  • 核心概念
  • 技术实现亮点
  • 示例词法器
  • 许可证

---

特性

  • 🚄 混合自动机:将词法规则编译为“DFA 字典查找 + NFA 动态谓词”的混合结构,兼顾速度与灵活性。
  • 🗑️ 零堆内存分配:核心路径使用 ReadOnlyMemory<char、预分配数组和栈式 DFS,最大限度减少 GC 压力。
  • 🛠️ 声明式规则 DSL:支持字符序列、范围、可选、重复(Kleene 星号/加号)、选择等常见正则构造。
  • 🛡️ 健壮性:内置最长匹配原则、规则优先级冲突解决、以及“恐慌模式”错误恢复机制。

---

环境要求

  • 开发环境:.NET 10 SDK 及以上(低版本未测试,建议使用 .NET 10)。
  • 运行时:兼容 .NET 10 及以上运行时。

---

快速开始

1. 引入代码

由于暂未发布 NuGet 包,请直接将 HyLex.Core/HybridAutomation.fs 文件复制到你的 F# 项目中。

2. 定义你的 Token 类型

// 定义一个简单的计算器 Token 类型
type CalcToken =
    | Number      // 数字
    | Plus        // +
    | Minus       // -
    | Multiply    // *
    | Divide      // /
    | LeftParen   // (
    | RightParen  // )
    | Whitespace  // 空白符