Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Feb 20, 2020 1:07 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 28 posts ]  Go to page 1 2 Next
Author Message
PostPosted: Sat Jun 03, 2006 9:16 pm 
Вот синтаксис языка, используемого в моем компиляторе:


Стандартные типы данных:
void - пустой тип
char - символ
byte - байт
short - целое со знаком (1 байт)
word - слово
int - целое со знаком (2 байта)
dword - двойное слово
long - целое со знаком (4 байта)


Новым типом может быть структура:
struct имя_структуpы
описание полей
end


Описание переменных:
имя_типа имя_переменной;
имя_типа имя_переменной [5]; // массив


Описание функций:
имя_типа имя_ф-ии(имя_типа имя_параметpа[,...])
операторы
end

Допускается описание заголовков функций.


Опеpаторы (в поpядке возрастания приоритета):
:= присваивание
| или
^ исключающее или
& и
< меньше
<= меньше или равно
= равно
!= не равно
>= болше или равно
> больше
+ сложение
- вычитание
* умножение
/ деление
% остаток от деления
! отpицание
- изменение знака
@ вычисление адpеса
[] индекс массива


Упpавляющие структуры:
if условие then
операторы
[else
опеpатоpы
end]


while условие do
опеpатоpы
end


repeat
опеpатоpы
until условие;


continue // пеpеход в начало цикла
exit // выход из цикла

return выpажение; // возвpат значения
return // возвpат из ф-ии типа void


Дополнительные опеpатоpы:
inc имя_целой_пеpеменной; // увеличение на 1
dec имя_целой_пеpеменной; // уменьшение на 1


Ассемблеpные вставки:
asm
опеpации [опеpанды]
end


/* коментарий */
// тоже коментарий


Last edited by Andryuha on Sat Jun 03, 2006 11:35 pm, edited 2 times in total.

Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 9:43 pm 
О компиляторе:
Компилятор пишется на паскале. Работает под Windows. Генерирует ассемблерный листинг для fasm'а. После компиляции ассемблером получается программа которая будет работать под MenuetOS/KolibriOS. В планах переписание компилятора на свой язык и перенос в МеОС.
Пока не все реализировано и то что есть еще глючит. Сам компилятор выложу недели через две.


Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 9:58 pm 
Жду Ваших замечаний, советов, вопросов...


Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 10:07 pm 
Offline

Joined: Tue Apr 18, 2006 11:48 pm
Posts: 53
А ихде оператор присваивания?


Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 10:12 pm 
Уже есть :)


Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 10:24 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
с типами какято путаница (может быть я один чегото недопонимаю),зачем куча однотипных стандартных типов
имхо int = word
long = dword


Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 10:34 pm 
int - это 2-х байтное целое со знаком, word - без знака
long - это 4-х байтное целое со знаком, dword - без знака


Top
   
 Post subject:
PostPosted: Sat Jun 03, 2006 11:09 pm 
По желанию тех, кто был на канале #meos, типы будут теперь такими:

short - 1но байтное целое со знаком
ushort - 1но байтное целое без знака
int - 2х байтное целое со знаком
uint - 2х байтное целое без знака
long - 4х байтное целое со знаком
ulong - 4х байтное целое без знака


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 3:42 am 
Offline

Joined: Sat May 27, 2006 5:26 am
Posts: 100
2 Andryuha:
Не вижу смысла использовать сишные имена типов, но при этом не соблюдать их стандартный (т.е. сишный) размер. Тогда уже лучше назвать типы иначе: byte, ubyte, word, uword, dword, udword. Или ещё привычнее: sbyte, byte, sword, word, sdword, dword.


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 12:29 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
byte по моему разумению и так обычно беззнаковый,как и dword
imho названия грамотные и куда понятней чем sword/word...
И кто сказал что это сишные имена? Сходство есть,но это ничего не значит


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 12:49 pm 
Offline

Joined: Mon Apr 10, 2006 7:22 am
Posts: 76
а как переменные в ассемблерных вставках использовать?


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 1:12 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Теоретически идентификатор это только ассемблерный указатель
Так как компилер генерит (или будет генерить) асм-листинг там будет видно как названа конкретная переменная
..и я думаю что во вставках их можно импользовать под теми же именами


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 1:13 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Хотя в таком случае возникает вопрос: как в разных функциях будут использоваться идентификаторы с одинаковыми именами


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 6:26 pm 
Offline

Joined: Mon Apr 10, 2006 7:22 am
Posts: 76
а модули, библиотеки или include есть?


Top
   
 Post subject:
PostPosted: Sun Jun 04, 2006 7:16 pm 
Offline

Joined: Sat May 27, 2006 5:26 am
Posts: 100
2 Victor:
Quote:
byte по моему разумению и так обычно беззнаковый

Если подразумевается термин "байт", то по определению он не является ни знаковым, ни беззнаковым. Определение можно посмотреть в любой классике. Если же Вы имеете в виду тип переменной "byte", то можно провести аналогию с сишным типом "char", который может быть знаковым или беззнаковым, в зависимости от соглашения по умолчанию, если не указан префикс signed/unsigned. Тип "Byte" есть в Паскале и Бейсике и является беззнаковым, но пишется с большой буквы - опять мимо. Если подразумевается какой-то экзотический язык, то так бы и написали.

Quote:
imho названия грамотные и куда понятней чем sword/word

Критерий грамотности и понятности? Тут банального "imho" маловато будет, т.к. язык разрабатывается не для одного единственного пользователя, как я понял.

Quote:
И кто сказал что это сишные имена? Сходство есть,но это ничего не значит

Хорошо, для Вас это ничего не значит. Для программистов, владеющих С, коих достаточно много, это имеет значение. Представьте, что при изучении иностранного языка вам говорят, что есть слово "яблок", но оно означает не яблок, а грушу.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 28 posts ]  Go to page 1 2 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited