Реализация языка программирования Оберон на базе PascalABC.NET: Основные этапы разработки: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Строка 40: Строка 40:


=== Типы ===
=== Типы ===
Реализованы основные '''типы''':
''INTEGER(4), BOOLEAN, SHORTINT(1), LONGINT(8), REAL(8), LONGREAL(8)''. И, дополнительно, — ''STRING''.<br />
Определяются следующие '''литералы''':
<span style="color: maroon">1644</span>            INTEGER
0FFH            INTEGER
5656565555555  LONGINT
678FFFFA3BBCH  LONGINT
TRUE, FALSE    BOOLEAN
234.67          REAL
8764.34E+3      REAL
8764.34E3      REAL
8764.34E-3      REAL
6345.79D+3      REAL
6345.79D3      REAL
6345.79D-3      REAL
'c'            CHAR
"c"            CHAR
65X            CHAR
'line'          STRING
"line"          STRING

Версия от 12:35, 30 июля 2010

Знакомство

Знакомство с архитектурой PascalABC.NET.

Текст_программы -> Синтаксическое_дерево -> Семантическое_дерево -> ... -> код

Прочтение этой статьи.

Разбор существующего кода (oberon00.lex and oberon00.y)

Тестирование и разбор основ

Описания

Проверка и корректировка сообщений об ошибках на примере различных ошибочных программ.

Несколько таких программ:

// Dls не совпадает с именем модуля
MODULE Decls;
BEGIN
END Dls.

// Встречено BEGIN, а ожидалось ';'
MODULE Decls
BEGIN    
END Decls.

// Встречено ':=', а ожидалось '='
MODULE Decls;
CONST
  A := 789;
BEGIN   
END Decls.

Правильная программа:

MODULE Decls;
CONST
  A = 789;
VAR
  a, b: INTEGER;
  f: BOOLEAN;
BEGIN 
END Decls.

Типы

Реализованы основные типы: INTEGER(4), BOOLEAN, SHORTINT(1), LONGINT(8), REAL(8), LONGREAL(8). И, дополнительно, — STRING.
Определяются следующие литералы:

1644            INTEGER
0FFH            INTEGER
5656565555555   LONGINT
678FFFFA3BBCH   LONGINT
TRUE, FALSE     BOOLEAN
234.67          REAL
8764.34E+3      REAL
8764.34E3       REAL
8764.34E-3      REAL
6345.79D+3      REAL
6345.79D3       REAL
6345.79D-3      REAL
'c'             CHAR
"c"             CHAR
65X             CHAR
'line'          STRING
"line"          STRING