TXR:一种用于便捷数据处理的原创编程语言

Hacker News Top 工具

摘要

TXR是一款专为便捷数据处理设计的原创编程语言,提供文本处理和数据操作工具,并包含文档、下载和社区支持等资源。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/21 21:47

# TXR:一种为便捷数据处理而生的全新原创编程语言 来源:https://www.nongnu.org/txr/ ## Kaz Kylheku ## 快速链接 - 参考手册(https://www.nongnu.org/txr/txr-manpage.html),亦提供PDF版本(https://www.nongnu.org/txr/txr-manpage.pdf) - TXR 302安装程序:32位Windows(https://www.kylheku.com/txr-downloads/txr-302/txr-302-Win32.exe)与64位Windows(https://www.kylheku.com/txr-downloads/txr-302/txr-302-Win64.exe) - Rosetta Code中的TXR解决方案(https://www.nongnu.org/txr/rosetta-solutions.html) - TXR已被以下操作系统发行版或包管理器打包并保持更新: - GNU Guix(https://guix.gnu.org/) - NixOS(https://nixos.org/) - Chimera Linux(https://chimera-linux.org/) - Alpine Linux(https://alpinelinux.org/) - Void Linux(https://voidlinux.org/) - EasyBuild(https://easybuild.io/) - T2系统开发环境(https://t2sde.org/) - **Homebrew:请勿通过Homebrew使用TXR**。参见本页底部警告。 - StackOverflow上基于TXR解决的非TXR相关问题: - 基于CSV多列的自定义排序(https://stackoverflow.com/questions/10050656/perform-highly-customized-sort-based-on-multiple-columns-of-a-csv-file/10050995#10050995) - 从HTML表格提取文本(https://stackoverflow.com/questions/10055385/extract-text-from-html-table/10055851#10055851) - 使用Awk从多个文件的列中存储值(https://stackoverflow.com/questions/9731461/using-awk-to-store-values-from-column-reads-for-multiple-files/9764676#9764676) - 复杂XML编辑场景(https://stackoverflow.com/questions/32523087/xml-editing-is-it-possible-somehow/34421108#34421108) - 使用AWK解析多条件输入(https://stackoverflow.com/questions/29079870/awk-to-parse-input-with-multiple-conditions/31058002#31058002) - 高效的文本平移不变特征变换(https://stackoverflow.com/questions/39920702/efficient-shift-invariant-feature-transform-for-text/39925664#39925664) - 获取`git bisect`当前状态(https://stackoverflow.com/questions/37667324/how-do-i-get-the-current-status-of-a-git-bisect/37668768?s=13|0.8110#37668768) - 获取每个CREATE语句的第n个字段并引用另一文件(https://stackoverflow.com/questions/37585956/how-to-get-nth-field-of-each-create-table-refering-to-another-file-under-linux-s/37666937?s=15|0.7987#37666937) - 仅`git add`匹配模式的行(https://stackoverflow.com/questions/36932309/how-do-i-git-add-only-lines-matching-a-pattern/37336801#37336801) - 在awk中进行元编程,将文件转换为HTML表格格式(https://stackoverflow.com/questions/41684176/metaprogramming-in-awk-convert-file-to-html-table-format/43440063#43440063) - Unix StackExchange上基于TXR的已采纳答案: - 查找最大重复行组(https://unix.stackexchange.com/questions/97634/os-x-linux-one-liner-script-to-find-the-largest-recurring-group-of-lines-in-a-te/97852#97852) - **新功能!**所有匹配`TXR`查询的答案: - 在StackOverflow(https://stackoverflow.com/search?q=is%3aanswer%20TXR) - 在Unix StackExchange(https://unix.stackexchange.com/search?q=is%3Aanswer+TXR) - GIT仓库/源码下载(https://kylheku.com/cgit/txr) - 发行说明(https://www.kylheku.com/cgit/txr/tree/RELNOTES) - Piotr Klibert的TXR Emacs模式(https://github.com/piotrklibert/txr-mode) - TXR 302多平台二进制下载(https://www.kylheku.com/txr-downloads/txr-302/) - 讨论、帮助与更新: - 邮件列表(https://kylheku.com/txr-users)——无需订阅即可发帖! - Libera IRC频道(https://kiwiirc.com/client/irc.libera.chat/?nick=Guest&#txr) - 在Mastodon关注TXR(https://fosstodon.org/@txr) - 在Mastodon关注Kaz(https://mstdn.ca/@Kazinator)(活跃度较高) - 在Mastodon关注Kaz(https://fosstodon.org/@Kazinator)(活跃度较低) ## 什么是TXR? TXR是一款务实、便捷的工具,凭借其双重特性随时应对日常开发挑战:其提供全文档模式匹配与提取语言,可从任意文本源抓取信息;同时配备强大的数据处理语言,能如热刀切黄油般轻松解决问题。许多任务可直接通过TXR的"一行命令"在系统提示符下完成。 TXR相对较新:项目始于2009年。由于它已不再是小型语言,简要介绍颇具难度。参考手册的PDF版本以大型Unix手册页形式呈现,不含索引与目录即达778881900951页之巨。 解决特定数据处理问题的TXR方法多种多样,可运用众多技能与技巧。 ## 精选用户评价 > *"TXR Lisp:让编码充满乐趣与活力!💥 简洁而强大,宛如为编程语言配备了速查表!😎"*(用户AI TechTree的Twitter/X帖子) > *"最适合文本处理的Lisp是TXR Lisp。[...] 但这是一个无底洞,若想完全掌握,你最好有大把空闲时间"*(4Chan匿名评论) > *"测试各种语言实现MAL时,txr-lisp的 ergonomics 体验最佳"*(用户wasamasa在#Lisp IRC频道的评论) > *"我的银行对账单是PDF文件,可通过pdftotext转为ASCII文本,但这会破坏文档结构,导致使用正则表达式(甚至PCRE)提取数据极为困难。而使用txr则轻松得多。"*(用户vcdimension在HackerNews的评论) > *"我最近发现了TXR,印象非常深刻,尤其对于一个相对年轻的语言而言。其手册页/文档质量极高。"*(用户alphapapa在GitHub的评论) ## 精简高效,依赖极少 TXR Lisp支持编译为基于寄存器的虚拟机代码。单个函数和文件(`.tl`文件编译为`.tlo`)均可编译。编译后的文件可连接后通过`load`加载。单个及连接后的编译文件均可使用`gzip`压缩。 编译器虽非原生实现,但具备优化能力:执行跳转线程化、死代码消除、常量折叠及数据流优化等。编译器仍在积极改进中。应用部署功能通过`save-exe`实现——该函数创建TXR可执行文件的副本(名称可自定义),包含启动时执行的表达式,通常用于加载相对目录下的其余应用组件。可执行文件只需配套所有必需的库模块,详情见参考手册。 TXR资源占用轻量:可执行文件约1.7MB代码(略大于GNU Awk的两倍),附属库模块额外占用约1.5MB。除`libffi`外无其他外部依赖。整个项目易于构建,仅需GNU Make、GCC/Clang及`configure`脚本依赖的少量shell工具。生成源代码已随项目提供,无需额外工具。 TXR内存占用极小:启动至交互提示符时,内存使用与GNU Bash相当。编译标准库(包括编译器等复杂文件)时,峰值内存仅需约18MB。 ## 创新与传统并存 TXR融合了多种思想(部分为原创),并受Common Lisp、Scheme、Awk、M4、POSIX Shell、Prolog、Ruby、Python、Arc、Clojure、S-Lang等语言影响。它包含两种可单独或混合使用的语言: - [TXR模式语言](https://www.nongnu.org/txr/txr-pattern-language.html) - [TXR Lisp](https://www.nongnu.org/txr/txr-lisp.html) **TXR模式语言**与Unix工具Awk可类比:两者均提供隐式便捷的输入扫描方式。Awk通过隐式读取文件,将其分割为可通过位置变量访问的记录和字段;**TXR则采用嵌套递归的模式匹配表示法绑定变量**,实现输入处理的隐式化。这种方法既能相对便捷地处理分隔字段,又能扩展至处理凌乱的松散结构化数据,或不同章节呈现不同规律性的数据。 TXR(模式语言)的构造非命令式语句,而是模式匹配指令:每个构造通过匹配、失败或抛出异常终止。搜索与回溯行为是隐式的。它具备结构化命名块(含非局部退出)、结构化异常处理、命名模式匹配函数等众多特性。其模式语言足以解析语法,同时在简单任务中仍保持易用性。 **值得一提的是,TXR实际上内置了Awk的实现**(以Lisp宏形式),这引出了下一个主题。 TXR中的另一种语言是**TXR Lisp**。它并非Common Lisp或Scheme的现有实现,而是包含许多新理念的新方言。TXR Lisp功能丰富,侧重于简洁高效的表达。在保持Lisp传统精髓的同时,它借鉴了新式脚本与函数式语言的设计。主流Lisp用户会发现技能可与TXR双向迁移。使用其他Lisp时,用户可能会怀念TXR Lisp的某些功能,反之亦然。 TXR项目珍视程序简洁性:程序应短小精悍。若您在寻求问题解决方案时遇到困难,TXR项目团队乐于倾听;请向邮件列表发信咨询。若某程序在其他语言中显著更清晰简短,项目团队很感兴趣——TXR或可吸收该技术或等效方案。 ## 需要帮助 TXR项目正在寻找黑客开发新功能。其内部结构清晰、易于理解维护,是开发者的乐园。请务必阅读[HACKING指南](https://www.kylheku.com/cgit/txr/plain/HACKING)。 ## 示例 此处收集了针对Rosetta Code多项问题的[TXR解决方案](https://www.nongnu.org/txr/rosetta-solutions.html)。 ## 字节码优化案例研究 本文[重点介绍](https://www.nongnu.org/txr/txr-opt.html)TXR Lisp优化编译器的部分能力。 ## 捐赠 *TXR是真正的自由软件*,基于[两条款BSD许可证](https://www.kylheku.com/cgit/txr/tree/LICENSE)发布,允许任何商业与非商业用途。若您视TXR为工具集中的得力助手,可通过以下方式表达感谢与支持!开发此类项目需投入无数时间。 ## 警告:关于Homebrew **警告:请勿使用Homebrew打包的TXR!** TXR项目收到反馈称Homebrew包中的TXR包含不稳定、不可靠的可执行文件。有用户报告甚至无法自行构建Homebrew TXR包(以排查问题)。Homebrew构建配方`txr.rb`未执行`make tests`,因此构建成功时未经过质量验证。据推测Homebrew可能使用了导致不稳定性的编译器代码生成特性。

相似文章

txcript: 在对话中切换编码代理

Lobsters Hottest

txcript 是一个库和命令行工具,允许开发者通过转换会话格式在对话中切换编码代理,并支持 Rust 和 JavaScript API。

T3X/0:一门极简的过程式语言

Hacker News Top

T3X/0 是一门极简的过程式编程语言,提供免费编译器,旨在用于教学,并能在 Unix、DOS 和 CP/M 等系统间实现跨系统兼容性。

Rars:一个主要由LLM编写的Rust RAR实现

Hacker News Top

一个用Rust编写的RAR压缩格式实现,主要由AI语言模型(OpenAI Codex和Claude)编写。如果手动开发可能需要数年时间,但该项目在数周内以低成本完成。