ML IDE и компилятор для Windows или Linux или Mac - PullRequest
26 голосов
/ 10 января 2010

Мне нужно написать код на ML, и я впервые использую этот язык. Есть ли среда разработки для Standard ML? (желательно под винду). Я пробовал гуглить (и stackOverFlowing!), Но все, что я нашел, было обычными компиляторами для Linux (в большинстве случаев с интерактивной консолью), но без IDE и Eclipse / NetBeans. Есть предложения?

Ответы [ 6 ]

21 голосов
/ 16 октября 2014

Как настроить SML с возвышенным текстом 2

Для тех, кто предпочитает Sublime Text вместо Emacs в качестве редактора для программирования SML, в следующем руководстве описано, как настроить Sublime Text для работы с SML.

Чтобы это руководство работало для вас, у вас уже должна быть установлена ​​ smlnj .

Шаг 1. Установите Sublime Text и управление пакетами

Начните с Загрузка Sublime Text 2 . Обязательно загрузите версию 2, поскольку поддержка синтаксиса SML еще не работает с версией 3.

Sublime Text поддерживает удивительный набор пакетов (например, плагинов), которые вы можете установить отдельно. Один из таких пакетов называется Package Control. Сначала вы должны Установить пакет управления , чтобы иметь возможность устанавливать другие пакеты прямо из редактора. Приведенная ссылка объясняет, что вам нужно сделать, чтобы установить этот пакет.

Шаг 2: установить SML и Sublime REPL

Теперь, когда у вас установлен Package Control, будет очень легко установить другие пакеты. Сейчас мы должны установить два пакета: SML для поддержки функций подсветки синтаксиса для языка программирования и SublimeREPL, который, как вы можете догадаться, представляет собой пакет, который добавляет возможности REPL для многих различных языков программирования в Sublime Text.

Чтобы установить эти пакеты, вы должны перейти в меню и найти Сервис -> Палитра команд и ввести «Установить пакет». В поле поиска вы вводите название пакета, который хотите установить, выбираете пакет из найденного списка и нажимаете клавишу ВВОД, чтобы установить его. Сделайте это для двух упомянутых выше пакетов: «SML» и «SublimeREPL»

После установки пакета SML, если вы открываете файл SML, вы должны получить возможность выделения синтаксиса в редакторе. Он даже предоставляет Sublime Text Theme под названием Son of Obsidian, который вы можете включить в Предпочтения -> Цветовая схема -> SML -> Son of Obsidian. Но вы не обязаны включать тему для работы с SML, это всего лишь предпочтение.

После установки пакета SublimeREPL вы сможете перейти в меню Инструменты -> SublimeREPL -> SML и открыть сеанс SML REPL, который будет поддерживать выделение синтаксиса с использованием пакета SML, а также историю команд, редактирование строк и автозаполнение. , Вы можете сделать свою жизнь по-настоящему легкой, если откроете две соседние вкладки, а в левой вкладке у вас будет файл кода SML, а справа - сеанс SML REPL. Вы можете сделать это, используя параметры View -> Layout.

Шаг 3. Сочетания клавиш

Теперь давайте добавим несколько сочетаний клавиш для работы с REPL. Пакет SublimeREPL предлагает небольшую конфигурацию клавиатуры, и предоставленные, вероятно, не будут хорошо работать с SML REPL. Вот что я обычно делаю.

  • Сначала перейдите в Настройки -> Обзор пакетов
  • Перейдите в подпапку SublimeREPL / config / SML.
  • Редактировать файл Default.sublime-commands в самом Sublime Text. Этот файл содержит текущие параметры меню SML в меню Сервис -> SublimeREPL. Итак, теперь мы изменим его, чтобы создать второй параметр, который может запускать существующий файл в новом сеансе SML REPL. Мой отредактированный файл выглядит так, как показано ниже. Обратите внимание на поле «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"
            }
        }    
    ]
    
  • Теперь, в том же каталоге, что и предыдущий файл, отредактируйте файл 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"
                            }
                        }
                    ]                                
                }]
            }]
        }
    ]
    
  • Последний шаг - добавить сочетания клавиш для этих двух команд. Перейдите в «Настройки» -> «Привязки клавиш пользователя» и отредактируйте файл с помощью следующих двух дополнительных команд. Не стесняйтесь менять мои клавиши и использовать любые другие сочетания клавиш, которые вы считаете подходящими, при условии, что они не используются для других функций.

    [
        {  
          "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"
          }  
        }  
    ]
    

И мы закончили. Теперь вы можете открыть SML REPL, просто нажав CTRL + J , K (это нажмите Ctrl + Alt + J, затем отпустите клавиши и нажмите K ). И если вы сейчас работаете с файлом SML, вы можете нажать CTRL + J , M , чтобы отправить его в новый сеанс SML REPL.

Шаг 4: Сборка системы

Sublime Text предоставляет конфигурации, которые позволяют вам анализировать ваш файл кода и определять, если что-то не так, и сообщать вам точно, где проблема. Для этого мы должны настроить «систему сборки». Конфигурация - это просто файл, который сообщает возвышенному тексту, какую команду запускать и как интерпретировать вывод. Если синтаксическому анализатору sml не удается выполнить синтаксический анализ или выполнение вашей программы, то выходные данные сообщают вам, где проблема. Система сборки позволяет нам определить регулярное выражение для анализа такого вывода и помочь Sublime text найти строку и столбец, содержащий проблему.

Перейдите в «Настройки» -> «Обзор пакетов» и в папке «Пользователь» создайте новый файл с именем SML.sublime-build и определите файл следующим образом:

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

Обязательно замените командный путь на допустимый путь в вашей системе. После сохранения файла вы можете перейти в меню и выбрать «Сервис» -> «Создать систему» ​​-> «SML». Затем, чтобы проверить ваш файл, вы можете сделать Tools -> Build, чтобы проанализировать ваш файл и найти любые ошибки. А с помощью пункта меню Сервис -> Результат сборки -> Следующий результат и Предыдущий результат вы можете перемещаться между ошибками, обнаруженными параметром системы сборки, и Sublime Text установит курсор в точное положение ошибки, как сообщается компилятором SML. .

Мое регулярное выражение выше может быть не самым лучшим, поэтому не стесняйтесь улучшать его по своему усмотрению.

И это все. Вы в значительной степени готовы начать кодирование с SML и Sublime Text.

20 голосов
/ 08 декабря 2013

Вы можете использовать Isabelle / jEdit в качестве IDE для Isabelle / ML или официального стандарта ML (SML'97). Базовая система ML - Poly / ML , которая отличается поддержкой многоядерного оборудования.

Строго говоря, среда Isabelle предназначена для интерактивного и автоматического доказательства теорем, но ее поддержка SML IDE довольно сложна: исходные файлы статически проверяются и семантически оцениваются во время редактирования пользователем. Аннотированные источники содержат разметку о предполагаемых типах, ссылки на определения позиций элементов и т. Д.

Для быстрого ознакомления см. Панель «Документация», раздел «Примеры», запись src/Tools/SML/Examples.thy (по состоянию на Isabelle2014).

SML-PIDE

11 голосов
/ 10 января 2010

При работе с SML в Windows я использовал SML / NJ для компиляции и Notepad ++ для редактирования (Notepad ++ имеет синтаксическую раскраску для Caml, которая должна быть идентична SML для ваших нужд).

Как уже упоминалось, для ML достаточно простого редактора.

7 голосов
/ 10 января 2010

Для SML существует несколько режимов Emacs. Проверьте http://mlton.org/Emacs для получения дополнительной информации.

sml-режим должен предоставить вам хорошую среду для написания SML-кода. Eclipse & Co. были разработаны в связи с тем, что java требует много стандартных компонентов, таких как аксессуары, адаптеры и так далее. Если вам требуются те же функции для ML, вам следует еще раз проверить, не чрезмерно ли вы проектируете.

Редактировать: и, кстати, SMLNJ поставляется с плагином Eclipse. Я не могу опубликовать ссылку, просто Google для Smlnj Eclipse.

6 голосов
/ 21 сентября 2011

Я занимаюсь разработкой Scheme IDE для Windows. Это называется "Бэббидж". Он также имеет режим для OCaml и SML. Это как минимум Emacs. Бэббидж очень прост и имеет окна, как назначение клавиш. Бэббидж - редактор Юникода.

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

2 голосов
/ 20 июля 2013

Eclipse может быть настроен для получения многих полезных функций без использования сложного плагина для конкретного языка.

У меня есть руководство по настройке Eclipse для новых языков . Некоторые основные моменты из этого документа:

  • Синтаксические цвета можно добавить с помощью Eclipse Colorer . Это плагины, которые предоставляют синтаксические цвета для большого количества языков, включая SML и OCaml. Новые языки могут быть легко добавлены с помощью пользовательских цветных файлов.

  • В сборка с использованием внешнего компилятора из Eclipse может использоваться стандартная функция Program Builder . Конструктор запускается при выполнении обычной команды Build Project . Для настройки нового компоновщика: Свойства проекта -> Построители -> Новый ... -> Программа или используйте плагин Laid Build Marker ниже.

  • Для захвата ошибок компиляции и предупреждения от внешнего компоновщика может использоваться анализатор вывода сборки. Laid Builder Marker - это плагин, который реализует такие парсеры. Синтаксические анализаторы помещают маркеры проблем в редакторах и в представлении «Проблемы». Этот плагин также можно использовать для добавления программных конструкторов в проекты. В качестве отправной точки можно использовать конструктор Cabal.

  • Для запуска скомпилированных программ из Eclipse с использованием функции External Tools . ( Выполнить -> Внешние инструменты )

  • Расширенная поддержка навигации по коду и выделения текста может быть добавлена ​​с некоторыми из других подключаемых модулей Project: можно использовать подключаемый модуль Marker Block Selection выделять текст в скобках. Плагин Editor Utilities может использоваться, среди прочего, для перехода между блоками кода, разделенными пустыми строками.

  • Используйте стандартную команду Завершение слова ( Shift + Alt + 7 ) в качестве вспомогательного помощника для бедных.

  • Используйте стандартную команду Toggle Block Selection (Shift + Alt + A) для вставки / удаления комментариев на нескольких строках одновременно.

  • Некоторые другие полезные стандартные функции Eclipse включают:

    • Команда Открытый ресурс ( Ctrl + Shift + R )
    • Команда Поиск файла ( Ctrl + H )
    • Функция закладок ( Редактировать -> Добавить закладку ). Обязательно установите флажок Включить в следующую / предыдущую навигацию * поле 1091 * ( Настройки -> Общие -> Редакторы -> Редакторы текста -> Аннотации -> Закладки ).

Обновление сайта для проекта Laid:

https://bitbucket.org/lii/laid_language_tools/src/master/se.lidestrom.laid.update_site/

Обновление сайта для Eclipse Colorer:

http://colorer.sourceforge.net/eclipsecolorer/

Отказ от ответственности: я являюсь автором проекта Laid.

...