mlbasis文件的语法糖

transmler的Python项目详细描述


#

sml编译器,例如[mlton](http://mlton.org/mlbasis)和
[sml/nj](http://www.smlnj.org/doc/cm/new.pdf)的设计目的是在很大程度上减轻程序员对单个源文件的依赖关系图的管理,而不仅仅是指定导入和exports,通常用于构成库
组件的一组源文件。

它们适用于此。在这种方法中,
声明和它们的使用之间的链接是显式的。这通过限制范围内名称的意外滚雪球来实施某种
规程。
此外,可以一次一个文件递增地键入检查程序,
可能作为后台进程,
如https://sourceforge.net/p/mlton/mailman/message/31513087/


中所建议的,目标是为添加到[mlbasis]中的transpiler步骤开发概念证明基于tp://mlton.org/mlbasis)的编译工作流,并在一个非常重要的sml项目上测试它。应该强调的是,mlbasis在幕后管理名称空间的方式没有任何变化。将支持
[mlbasis](http://mlton.org/mlbasissyntaxandsemantics)构造的子集
(不包括"ann")。


/foo.smlb
transmitle src--out dist--skip readme--copy files
$(sml)-stop tc./dist/foo.sml.mlb
````


"transmitle"命令行实用程序(此处假定位于shell
搜索路径)将获取"src"目录和tran中的任何"*.smlb"、"
`*.sigb"或"*.funb"文件。将它们插入"dist"目录中的一组
源文件`*b`中的xport`语句必须位于任何
sml程序之前,但在导入/导出块中允许使用sml样式的注释(和行指令)。

/>import"/path/to/modulea.sigb"
从"./path/to/moduleb.funb"导入(函子x,结构z=y)
```

>默认情况下,每个模块都将隐式导入sml基库
(`$(sml-lib)/basis/basis.mlb`),除非被任何显式的
`import$(sml-lib)/…`direc重写与上面的示例一样,

`transmile`将尝试按以下顺序解析任何路径(来自
`$(sml-lib)`root的任何路径除外):
*搜索相对于`*b`源文件的目录(指定绝对路径的除外);
*后跟环境变量能够"sml path"(设置为"makefile"中的"project root"<;project root>;/src:<;project root>;/sml modules");
*后跟任何与安装相关的默认搜索路径(shell"path")。

lpath)>;/x.sig.mlb`,然后`<;($path)>;/x.sig.mlb`,如果未找到,则返回
错误。

结果将是一个带有sml程序的"example.sml"文件,加上一个"example.sml.mlb"文件:

``sml
local
basis a=bas(第1.8行"example.sml b"*)$(sml-lib)/basis/basis-1997.mlb end
basis b=bas(第2.8行"example.smlb"*)/path/to/modulea.sig.mlb"end
basic c=
>让
(*35;第3.42行"example.smlb"*)"./path/to/moduleb.fun.mlb"
>在
>bas

>bas
(*第3.9行"example.smlb"*)函子x
(*;第3.20行"example.smlb"*)structure z=y
>end
end

>end




>打开一个b c



是的
示例.sml
end
```

在上面的example.sml b中,得到的example.sml.mlb`
将包含:


``sml
local
local
basis a=bas(第1.8行example.smlb"*)$(sml库)/basis/basis-1997.mlb end
basis b=bas(第2.8行example.smlb"*)"/path/to/modulea.sig.mlb"end
基c=

(第3.42行"example.smlb"*)。/path/to/moduleb.fun.mlb"
in
bas
(第3.9行"example.smlb"*)函子x
(第3.20行"example.smlb"*)结构z=y
结束


r/>example.sml
结束

(*第4.9行"example.sml b"*)签名k
(*第4.22行"example.smlb"*)结构m=l
结束
````

如果"example.smlb"中缺少"export"语句,则模块
将有效导出其所有顶级标识符。

安装当前需要Python3。(我计划重写sml中的transpiler。)

克隆存储库并运行"python transmile.py"以显示
用法消息,或者使用"pip"安装:

``shell
``pip install transmiler
`transmile
````

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否在servlet中检索上一页路径?   Java抱怨在开关的默认情况下未初始化最终字段   Java泛型:为什么编译器不能判断这个类<t>对象与这个类的类型参数的对象的类具有相同的类型?   Java:继承方法中使用的私有变量   HibernateJava。ClassCastException:java。lang.Integer不能强制转换为abc。def。我的项目。奥姆。EmployeeTopMetaData   http java发布和下载文件   java改进条件检查   java如何将2d数组的条目作为键放在地图中   java如何获取传递给运行时的值。getRuntime。JUnit测试用例中的exit(value)   java注释来创建所有可能的构造函数   自动建议列表:java。lang.IllegalArgumentException:在XPath表达式为null时找不到元素   为什么MapAPI在Java中不提供流功能?   gradle不导入本地java库   尽管我使用的是SessionCreationPolicy,java Spring安全性似乎仍在使用会话。无国籍   使用java查找MongoDB中数组元素的平均值