Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

GinCompiler

Компилятор .NET на основе синтаксиса Паскаль

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

GinCompiler

Компилятор .NET на основе синтаксиса Паскаль

Описание языка GinPascal

зарезирвированные слова: program, unit, var, if, then, else, for, to, downto, do, while, repeat, until, goto, type, const, uses, procedure, function, begin, end, and, or, not, xor, div, mod, true, false, nil, array

Структура программы:

pascal
program ?????? ??????????????????; // не обязательно, вообще не выполняет никакой функции
???????????? uses // не обязательно
???????????? ???????????????? // не обязательно
begin // не обязательно
  ??????????????????
end. // не обязательно

Да, да вы не ошиблись, можно просто написать оператор и это будет программа !

Так выглядит программа HelloWorld.pas: Write('Hello World !!!');

! Если вы не используете блок begin..end то первое обьявление var будет восприниматься как глобальное, а не локальное.

В uses можно добавить помимо имен модулей и пространств имен .NET выражение типа Идентификатор = пространство_имен_.NET

Например:

pascal
{$reference 'System.Windows.Forms.dll'}
{$apptype windows}
uses 
 System,
 WF = System.Windows.Forms;
begin
 WF.Application.Run(WF.myForm);
end.

т.е. WF это сокращенное слово System.Windows.Forms теперь.

Раздел описаний может включать разделы описания переменных, констант(пока не реализовано), типов, процедур и функций, которые следуют друг за другом в произвольном порядке.

Комментарии { Это комментарий }

(* Это тоже комментарий *) - не реализовано

// Это комментарий

Описание переменных Раздел описания переменных начинается со служебного слова var, после которого следуют элементы описания вида:

список имен: тип; - для описания переменых в блоке begin.end имя := выражение; // - для описания переменых в блоке begin.end имя: тип; - для описания переменых в блоке begin.end и в глобальных переменных

Метки Так же как и в обычном паскале, только их не надо описывать.

Описание типов Раздел описания типов начинается со служебного слова type, после которого следуют строки вида имя типа = тип;

Например: type myint = integer;

Операторы реализованы все кроме: case, foreach, try, raise, lock

синтаксис модуля:

unit имя модуля; раздел описаний begin раздел инициализации - пока не реализовано end.