Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср апр 25, 2018 3:25 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Компилятор ЯВУ
СообщениеДобавлено: Сб июн 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


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


Последний раз редактировалось Andryuha Сб июн 03, 2006 11:35 pm, всего редактировалось 2 раза.

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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 03, 2006 9:58 pm 
Жду Ваших замечаний, советов, вопросов...


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 03, 2006 10:07 pm 
Не в сети

Зарегистрирован: Вт апр 18, 2006 11:48 pm
Сообщения: 53
А ихде оператор присваивания?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 03, 2006 10:12 pm 
Уже есть :)


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 03, 2006 10:24 pm 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 03, 2006 10:34 pm 
int - это 2-х байтное целое со знаком, word - без знака
long - это 4-х байтное целое со знаком, dword - без знака


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 03, 2006 11:09 pm 
По желанию тех, кто был на канале #meos, типы будут теперь такими:

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


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 3:42 am 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 12:29 pm 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 12:49 pm 
Не в сети

Зарегистрирован: Пн апр 10, 2006 7:22 am
Сообщения: 76
а как переменные в ассемблерных вставках использовать?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 1:12 pm 
Не в сети

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


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 1:13 pm 
Не в сети

Зарегистрирован: Пн май 01, 2006 10:12 pm
Сообщения: 349
Хотя в таком случае возникает вопрос: как в разных функциях будут использоваться идентификаторы с одинаковыми именами


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 6:26 pm 
Не в сети

Зарегистрирован: Пн апр 10, 2006 7:22 am
Сообщения: 76
а модули, библиотеки или include есть?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 04, 2006 7:16 pm 
Не в сети

Зарегистрирован: Сб май 27, 2006 5:26 am
Сообщения: 100
2 Victor:
Цитата:
byte по моему разумению и так обычно беззнаковый

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

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

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

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

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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB