中文輸進去,程式出得來,開發者發大財 - LingaScript: 中文化TypeScript
原文在原创者 (也是周蟒作者) 博客: 中文輸進去,程式出得來,開發者發大財
前陣子過年,終於得以抽出的一些時間,可以來嘗試一些不同的東西。
花了幾天查看 Typescript 程式碼,改寫了個可用繁/簡中文語法寫JS的轉譯器 LingaScript
使用它做了個「中文輸進去,程式出得來,開發者發大財」的中文程式影片範例,歡迎大家開心試用。
无法粘贴,详见原文。
如何做到的
這個專案脫胎自過去開發周蟒(Python + 中文語法)的經驗,並參考了 CTS (Typescript + 中文語法)原始碼。
微軟主導開發的 Typescript 提供了分析 Typescript 語法,並可輸出成 Javascript 的轉譯器(src/compiler)。更棒的是因為 Visual Studio的開發工具中整合了 Typescript,而微軟為了讓 Visual Studio 中的所有編譯結果都有本地化語言輸出,也在 Typescript 中支援了本地化語言的命令行工具和錯誤輸出。
因此, ‵LingaScript‵ 目前所做的,是讓支援的中文語法可分析為對應的 symbol,並預設將命令行工具設成對應的本地化語言。如此一來就可以得到較完整的使用本地化語言的開發體驗。
因為看到 CTS 改版不易的問題,我使用自己開發,基於Google 提供的 diff-match-patch 包裝的 file-patch 工具,來對修改後的程式碼和 Typescript 原始碼做 diff/patch。‵LingaScript‵ 專案中保存了修改後的 compiler 相關檔案和 diff 檔。透過 patch 的方式更容易相容版本升級時的改動。
具體可以查看相關用到的命令 https://github.com/gasolin/lingascript/blob/master/package.json#L14
其他想法
‵LingaScript‵ 目前的架構不僅止於能支援繁簡中文語法,只要加上對應的關鍵字檔案,也可以很快地支援其他語種,讓開發者或講師得以用熟悉的語言來介紹並執行Javascript 相容的程式。
如果有興趣的話,歡迎前往 https://github.com/gasolin/lingascript 討論或提出想法。
2019-03-14
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
在PyPI测试平台发布Python包
参考Packaging Python Projects, 源码在nobodxbodon/test-package-for-pypi 包名/__init__.py: 测试变量 = "值" setup.py中 import setuptools with open("README.md", "r") as 自述文件: 长描述 = 自述文件.read() setuptools.setup( name="test-package-name", version="0.0.4", author="小名", author_email="author@example.com", description="描述", long_description=长描述, long_description_content_type="text/markdown", url="https://github.com/pypa/sampleproject", packages=setuptools.find_packages(), classifiers=[ "Programming Language :: Python ...
-
下一篇
为《 两周自制脚本语言 》添加中文测试代码
源自自制编译器+自制脚本语言+自制编程语言 三书比较? 两年多前只看了一本的前六章: 实践"两周自制脚本语言"一书【java吧】_百度贴吧 当时是希望一路添加测试用例, 并且最终把语言改为中文语法. 但看到Gluonj之后,似乎必须要Loader.run来执行解释器, 得不到返回值, 只能打印解释结果. 今天从此书官网(スクリプト言語の作り方)找到了它的附带源码库: chibash/stone, 顺便研究了一下Gluonj源码, 找到了它的JUnit辅助功能: https://github.com/chibash/gluonj/blob/master/src/javassist/gluonj/util/UTester.java 据此写了第五到十四章的测试, 运行效果见开头. 下面以第九章的为例: 测试用"石头"语言源码: 位置类 class Position { x = y = 0 def move (nx, ny) { x = nx; y = ny; } } p = Position.new p.move(3, 4) p.x = 10 sum = p.x + p.y 测试代码: 面向...
相关文章
文章评论
共有0条评论来说两句吧...


微信收款码
支付宝收款码