Странно, что результатом сложения 1+1 будет «11». Т.е происходит конкатенация строк, хотя вот здесь написана конвертация в Double:
if currentFunctionName.Equals «get» then
Console.Write(«Input: „);
stack.Item(currentFunctionName).Add(“return», Double.Parse(Console.ReadLine()))
К 2010 году Микрософт таки написал свой аналог LEXX/YACC :)
Статье кстати плюс, но не надо писать в таком восхищенном стиле, как будто до этого ничего подобного не существовало :)
Вообще-то вы либо не знаете OCaml и F#, либо хотя бы один из них. F# — это язык из семейства ML, в основу которого изначально был положен OCaml, не более. Сейчас же они довольно сильно отличаются. В общем утверждение «F# это OCaml» абсолютно ложно.
Помнится, в школе написали с другом компиляторы бейсика и паскаля для «Агата» (был такой советский «аналог» Apple II) на асме и форте. Реализовать сначала какой-нибудь урезанный lisp мы тогда не додумались, а жаль, все могло бы получиться гораздо быстрее.
А статья хорошая. Хоть Микрософт далеко не первый, кто пишет свой lexx/yacc )
На этой фразе почему-то вспомнилась самая короткая программа для игры в шахматы, которая выглядела почти как mime64 :) Под некоторые задачи и правда иногда проще сначала свой язык написать, а затем уже реализовывать, нежели использовать С++ или что-то аналогичное.
Полностью поддерживаю, сам такой сделал. Есть даже название для таких языков —
предметно-ориентированный язык( domain-specific language, DSL).
Делал на bison и flex.
>>В F# аналогом namespace служит ключевое слово module,
это не так, namespace в F# так и называется — namespace.
А module — это статический класс. Другое дело, что в F# можно «открывать» модули.
H#, Создаём свой язык программирования