W.Script языки. Часть 2 — высокоуровневые языки, или зачем нам в корпорации C++

от автора

Недавно я опубликовал обзор написания программы Hello, world на корпоративном языке R.Script LLP. Данный язык считается у нас в корпорации низкоуровневым, так как является самым быстрым, среди используемых нами. Сейчас же я расскажу о его модификации — R.Script M HPL (Modified HighProgrammingLanguage).

Предисловие, или для чего написана эта статья

Данная статья написана исключительно для того, чтобы показать как мы в нашей корпорации реализуем те, или иные задачи, а также показать наши разработки. W.S языки программирования (R.Script, L.Script, W-Script) используются только в нашей корпорации и не подлежат полному раскрытию, исключительно знакомство с синтаксисом и прочими особенностями.

Обзор R.Script Modified

Написание Hello, world

Написание Hello,world намного отличается легкостью по сравнению с LLP. Здесь сначала подгружаются модификации языка:

LOAD(INCLUDE{SCRIPT[~SYSTEM:.add>highlevel#]}); //Loading file C:/R.Script/highlevel.add 

А потом собственно и используем язык. В данной модификации уже предусмотрено тело main:

source .main {   //Some code there } 

А теперь и используем встроенные функции вывода:

var(int) conid = Console.OpenWindow(title="Hello,world",desp="Example application"); Console.WriteLine("Hello,world"); Console.CloseWindow(id=conid); 

И получаем вот такую не очень мудрую программу, и при всем она работает почти на всех платформах, используя Консоль в Windows и терминал в Linux/Mac.

//R.Script 2012 M HPL Hello world source .main {   var(int) conid = Console.OpenWindow(title="Hello,world",desp="Example application"); //Открываем окно консоли, где будем писать   Console.WriteLine("Hello,world"); //Пишем в консоли, стандартно в последней открытой   App.Wait(5s); //Ожидаем 5 секунд до следующей команды (аналог App.Sleep)   Console.CloseWindows(id=conid); //Закрываем окно консоли } 

А теперь практика

Ну, а теперь я решил написать скрипт переводчика в консоли, используя сервис Google Translate и работу с ее API.

create function .getTranslatedText (pagecode) {   if (var.isset=pagecode and var.!empty==pagecode and String.Search(result,"translatedText")==TRUE) {     var(str) result = String.Cut(mode="searchline","\"translatedText\" :\"(.*)\"","intext"); //Находим строку с текстом и оставляем только текст     return result;   } else {     if (Console.IsOpened()==FALSE) var(int) conid = Console.OpenWindow(); //Если консоль не открыта - открываем     Console.WriteLine("translated text get error"); //Ошибка     use finish(conid); //Используем функцию завершения приложения. Приставка use используется для того, чтобы отделить пользовательские и функции из дополнений от основных     return 0;   } } create function .finish(consoleid) {   if (Console.IsOpened==FALSE) App.Exit(); //Проверяем, есть ли открытая консоль, если нету - выходим   if (var.!isset=consoleid and var.empty=consoleid and Console.WindowExists(consoleid)) App.Exit(); //Проверка на правильность переменной переменной   Console.WriteLine(text="Программа завершена, для выхода нажмите любую клавишу",window=consoleid);   Console.WaitKey();   App.Exit(); } source .main {   include("SYSTEM:.dir>HTTP:.hpl>prot"); //Загружаем модуль, для работы через протокол HTTP (файл C:\Source\HTTP\prot.hpl)   conid = Console.OpenWindow(title="Англо-русский Переводчик","Powered by Google Translate");   var(arr) messages = Array.Create(0>"Переводчик приветствует вас! Введите текст для перевода",1>"Загрузка ответа от сервера",2>"Перевод Вашего текста:",3>"Работа переводчика завершена, нажмите любую клавишу для выхода, или F2 для перевода другого текста");   var(int) messnum = 0;   Console.WriteLine(messages[messnum]);   var(str) texttotrans = Console.ReadLine();   Console.WriteLine(messages[messnum++]);   result = HTTP.GetHTML(url="https://www.googleapis.com/language/translate/v2?key=MY_KEY&source=en&target=ru&q="..String.Change(" ">"%20",texttotrans),mode="secure");   var(str) return = use getTranslatedText(result);   Console.WriteLine(messages[messnum++].."\n\r"..return.."\n\r"..messages[messnum++]);   var(int) userkey = Console.ReadKey();   if (userkey==K_KEY_F2) {     App.ClearVars();     App.StartMain();   } else App.Exit(); } 

В результате мы получили консольный мультиплатформенный англо-русский переводчик. Вот и практическое применение. В данном коде можно узнать практически все особенности данного языка. Если что-то не понятно — можно задать вопросы.

От автора

Данный язык на практике почти не используется. Используется в основной L.Script и W.Script Platform, о которых я напишу в следующей статье и распишу подробно что там и зачем, а также сравню их коды с кодами C++ и их достоинства по сравнению с ним. Также расскажу о построении GUI приложений с использованием встроенных библиотек L.Script

Продолжение следует…

ссылка на оригинал статьи http://habrahabr.ru/post/158099/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *