Pull to refresh

W.Script языки программирования, или как мы развлекаемся в нашей компании

Abnormal programming *Programming *
Sandbox
Tutorial
Наша компания (Австралия, Сидней) существует уже 2 года. Так вот — решили мы год назад сделать для разработки свои языки программирования. Точнее сама основа уже была — закрытые языки программирование нашей компании-предшественницы.

В итоге мы получили три языка программирования — R.Script (микропроцессоры, вычислительные программы), L.Script (GUI, Web приложения) и главный — W.Script (этот язык — основа двух предыдущих и с ним можно делать все, что хочешь).

В этой статье я впервые в интернете расскажу о этих мозгоубивающих увлекательных языках программирования.


R.Script

Существует две редакции этого языка — LLP и HLP. Главная редакция, которую наши программисты используют, — LLP. HLP же является его расширением и превращением в полнофункциональный язык программирования типа L.Script (на данный момент HLP не используется в наших проектах).

Рассмотрим LLP

Для того, чтобы запустить программу, точнее сказать компилятору, что она есть (обычно это тело main) нужно запустить функцию INCLUDE:
LOAD(INCLUDE):

Двоеточие в конце строки нужно для открытия тела данной функции (т.е. мы сделали main { ).
Теперь нужно загрузить API, с которым мы будем работать:
PAR(STRING[~SYSTEM:.api>consoleapi#]);

Теперь я думаю, что стоит пояснить данную строку. На любом другом языке это выглядело бы подобно этому:
include("C:\Source\consoleapi.api");

То есть строка в данном языке начинается с символа "~", а завершается — символом "#". Все строки должны быть обработаны функцией STRING[]; — квадратные скобки используются по причине того, что обычные () уже были использованы в строке.
Теперь нужно завершить тело документа, чтобы далее работать с API:
PAR(-END);

И закрываем тело вообще:
END

В итоге получаем программу:
LOAD(INCLUDE):
  PAR(STRING[~SYSTEM:.api>consoleapi#]);
  PAR(-END);
END

Для чего нужен дефис в функции PAR? А для того, чтобы полностью завершить выполнения тела. Если мы захотим подгрузить Win32API можем продолжить:
 LOAD(INCLUDE):
  PAR(STRING[~SYSTEM:.api>consoleapi#]);
  PAR(END);
  PAR(START); //Говорим, что хотим продолжить
  PAR(STRING[~SYSTEM:.fir>Windows:.api>win32#]); //Загружаем файл C:\Source\Windows\win32.api
  PAR(-END); //Полностью завершаем тело
END

А теперь, чтобы что-то вывести нужно использовать API. Для этого нужно создать тело использования API:
LOAD(INCLUDE):
  PAR(STRING[~SYSTEM:.api>consoleapi#]);
  PAR(-END);
END

LOAD(API::CONSOLE-INCLUDE[PAR(LINE2)]):
  ECHO(): //Говорим программе, что будем выводить (и открываем дело вывода при помощи двоеточия
    PAR(STRING[~Hello, world#]);
    PAR(-END);
  END //Закрываем тело ECHO
  PAR(-END); //Завершаем тело API
END //Закрываем тело API

В итоге мы получили «маленькую» программу Hello, world, которую можно скомпилировать почти во всех операционных системах (использует она консоль, в linux — терминал).

UPD: Данная статья написана для того, чтобы показать какие языки мы используем для программирования ракет, микроконтроллеров и логики процессоров.
Продолжение следует…
Tags:
Hubs:
Total votes 27: ↑9 and ↓18 -9
Views 4.4K
Comments Comments 36