适用于Windows或Linux或Mac的ML IDE和编译器

Saj*_*ani 27 ide compiler-construction programming-languages ml sml

我必须在ML中编写一些代码,这是我第一次使用该语言.标准ML是否有任何开发环境?(最好在Windows下).我尝试使用googling(和stackOverFlowing!),但我发现的只是Linux的简单编译器(最多使用交互式控制台),但没有IDE或Eclipse/NetBeans插件.有什么建议 ?

Edw*_*rzo 21

如何使用Sublime Text 2配置SML

对于那些喜欢使用Sublime Text而不是Emacs作为编程SML的编辑器的人,以下指南描述了如何配置Sublime Text以使用SML.

要使本指南适合您,您必须已经安装了smlnj.

第1步:安装Sublime文本和包控制

首先下载Sublime Text 2.确保下载版本2,因为SML语法支持尚不适用于版本3.

Sublime Text支持一组可以单独安装的令人惊奇的软件包(即插件).其中一个包称为包控制.您必须首先安装Package Control才能直接从编辑器安装其他软件包.提供的链接说明了安装此软件包需要执行的操作.

第2步:安装SML和Sublime REPL

现在您已经安装了Package Control,安装其他软件包非常容易.我们现在必须安装两个软件包:SML支持编程语言的语法高亮功能和SublimeREPL,正如您可能猜到的那样,它是一个将许多不同编程语言的REPL功能添加到Sublime Text的软件包.

要安装这些软件包,您必须转到菜单并查找工具 - >命令选项板,然后键入"安装软件包".在搜索框中,您可以编写要安装的软件包的名称,从找到的列表中选择软件包,然后按Enter键以安装它.对上面提到的两个包执行此操作:"SML"和"SublimeREPL"

一旦安装了SML包,如果打开SML文件,您应该在编辑器中获得语法高亮功能.它甚至提供了一个名为Son of Obsidian的Sublime Text Theme,您可以在Preferences - > Color Scheme - > SML - > Son of Obsidian中启用它.但是您不需要启用主题来使用SML,这只是一个偏好.

一旦安装了SublimeREPL包,您就可以进入菜单Tools - > SublimeREPL - > SML并打开一个SML REPL会话,该会话将支持使用SML包进行语法突出显示,以及命令历史记录,行编辑和自动完成.如果你打开两个并排的标签,你可以让你的生活变得非常简单,在你的左侧标签中,你可以拥有你的SML代码文件,在你的右边,你可以使用SML REPL会话.您可以使用"视图" - >"布局"选项来完成此操作.

第3步:键盘快捷键

现在让我们添加几个键盘快捷键来使用REPL.SublimeREPL包提供了很少的键盘配置,并且提供的那些可能无法与SML REPL一起使用.所以这就是我通常做的事情.

  • 首先转到首选项 - >浏览包
  • 进入SublimeREPL/config/SML子文件夹.
  • Default.sublime-commands在Sublime Text中编辑文件.此文件包含Tools - > SublimeREPL菜单中的当前SML菜单选项.因此,我们现在将更改它以创建第二个选项,该选项可以在新的SML REPL会话中运行现有文件.我编辑的文件如下所示.注意"id"字段.我们可以根据需要定义尽可能多的不同命令,为它们提供不同的ID.在下一步中,我们将定义每个命令的作用.

    [
        {
            "caption": "SublimeREPL: SML",
            "command": "run_existing_window_command", "args":
            {
                "id": "repl_sml",
                "file": "config/SML/Main.sublime-menu"
            }
        },
        {
            "caption": "SublimeREPL: SML - Run File",
            "command": "run_existing_window_command", "args":
            {
                "id": "repl_sml_run",
                "file": "config/SML/Main.sublime-menu"
            }
        }    
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在,在与上一个文件相同的目录中,编辑该Main.sublime-menu文件.此文件包含上面定义的每个命令应该执行的操作的详细信息.我编辑的文件定义了上述两个命令,一个用于简单地打开REPL,另一个用于打开REPL中的当前文件.它看起来如下:

    [
         {
            "id": "tools",        
            "children":
            [{
                "caption": "SublimeREPL",
                "mnemonic": "r",
                "id": "SublimeREPL",
                "children":
                [{
                    "caption": "SML",
                    "id": "SML",
                    "children": [
                        {"command": "repl_open",
                         "caption": "SML",
                         "id": "repl_sml",
                         "args": {
                            "type": "subprocess",
                            "encoding": "utf8",
                            "cmd": ["sml"],
                            "cwd": "$file_path",
                            "external_id": "sml",
                            "syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
                            }
                        },
                        {"command": "repl_open",
                         "caption": "SML - Run Current File",
                         "id": "repl_sml_run",
                         "args": {
                            "type": "subprocess",
                            "encoding": "utf8",
                            "cmd": ["sml", "$file_basename"],
                            "cwd": "$file_path",
                            "external_id": "sml",
                            "syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
                            }
                        }
                    ]                                
                }]
            }]
        }
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  • 最后一步是为这两个命令添加键盘快捷键.转到首选项 - >键绑定用户,并使用以下两个附加命令编辑该文件.您可以随意更改我的密钥并使用您认为合适的其他快捷键,前提是它们不用于其他功能.

    [
        {  
          "keys":["ctrl+alt+j","k"],   
          "command": "repl_open",      
          "args": {  
               "type": "subprocess",  
               "encoding": "utf8",  
               "cmd": ["sml"],  
               "cwd": "$file_path",  
               "syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
               "external_id": "sml"
          }  
        } ,
        {  
          "keys":["ctrl+alt+j","m"],   
          "command": "repl_open",      
          "args": {  
               "type": "subprocess",  
               "encoding": "utf8",  
               "cmd": ["sml", "$file_basename"],  
               "cwd": "$file_path",  
               "syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
               "external_id": "sml"
          }  
        }  
    ]
    
    Run Code Online (Sandbox Code Playgroud)

我们已经完成了.现在,您只需按开SML REPL CTRL+ J,K (这是按Ctrl + Alt + J,然后松开键,然后按K).如果您当前正在使用SML文件,则可以按CTRL+ J,M将其发送到新的SML REPL会话.

第4步:构建系统

Sublime Text提供的配置允许您解析代码文件并确定是否有错误,并让您确切知道问题所在.为此,我们必须配置"构建系统".配置只是一个文件,告诉sublime文本运行什么命令以及如何解释输出.如果sml解析器无法解析或执行您的程序,那么输出会告诉您问题所在.构建系统允许我们定义一个正则表达式来解析这样的输出,并帮助Sublime文本找到包含问题的行和列.

转到首选项 - >浏览包,然后在用户文件夹下创建一个名为的新文件SML.sublime-build,并按如下方式定义文件:

{  
  "cmd": ["/usr/local/bin/sml","$file"],  
  "selector": "source.sml",  
  "working_dir": "$file_path",
  "file_regex": "^(.*\\.sml):(\\d+)\\.(\\d+)(\\-(\\d+)\\.(\\d+))?\\s(.*)$"
 } 
Run Code Online (Sandbox Code Playgroud)

确保使用系统中的有效路径替换命令路径.保存文件后,可以转到菜单并选择"工具" - >"构建系统" - >"SML".然后,要检查您的文件,您可以执行工具 - >构建来解析您的文件并查找任何错误.通过使用菜单选项工具 - >构建结果 - >下一个结果和上一个结果,您可以在构建系统选项检测到的错误之间导航,而Sublime Text将光标定位在SML编译器报告的错误的确切位置.

我上面的正则表达式可能不是最好的,所以请随意根据自己的需要进行改进.

就是这样.您已准备好开始使用SML和Sublime Text进行编码.


Mak*_*ius 20

您可以使用Isabelle/jEdit作为Isabelle/ML的IDE或官方标准ML(SML'97).基础ML系统是Poly/ML,它以支持多核硬件而着称.

严格来说,Isabelle环境用于交互式和自动化定理证明,但其SML IDE支持非常复杂:源文件在用户编辑时进行静态检查和语义评估.带注释的源包含有关推断类型的标记,对定义项目位置的引用等.

快速入门,请参阅"文档"面板的"示例"条目src/Tools/SML/Examples.thy(截至Isabelle2014).

SML-PIDE

  • 例如,跳转到声明和悬停以发现任意子表达式的类型. (2认同)

Oak*_*Oak 11

在Windows上使用SML时,我一直在使用SML/NJ进行编译,使用Notepad ++进行编辑(Notepad ++具有Caml的语法着色,根据您的需要,它应该与SML相同).

如上所述,对于ML,一个简单的编辑器就足够了.


Dam*_*amg 7

对于SML,存在一些Emacs模式.有关更多信息,请查看http://mlton.org/Emacs.

sml-mode应该为您提供编写SML代码的良好环境.Eclipse&Co.的开发是因为java需要很多样板资源,如访问器,适配器等.如果您需要ML的相同功能,那么您应该仔细检查您是否没有过度工程.

编辑:顺便说一下,SMLNJ附带了一个eclipse插件.我不能发布一个链接,只是google for smlnj eclipse.


小智 6

我正在为Windows开发Scheme IDE.它被称为"巴贝奇".它还具有OCaml和SML的模式.它就像一个最小的Emacs.巴贝奇非常简单,并且有像键分配的窗口.Babbage是Unicode编辑器.

http://homepage1.nifty.com/~skz/Entry/babbage.html