Предисловие, или для чего написана эта статья
Данная статья написана исключительно для того, чтобы показать как мы в нашей корпорации реализуем те, или иные задачи, а также показать наши разработки. 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/
Добавить комментарий