Автор Тема: Модифицированный синтаксис Оберона  (Прочитано 183229 раз)

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #285 : Ноябрь 29, 2012, 02:18:05 pm »
 ну и оператор := заменить на  <- 

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #286 : Ноябрь 29, 2012, 02:19:09 pm »
а что такое erec - сокращение от erection?  - нет ... принцип построения
 у форм должен быть один   начинаться с   id (уникальный идентификатор формы) - кончаться e_id (добавлением e_  к идентификатору)
erecord
начинаться с id, заканчиваться с eid

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #287 : Ноябрь 29, 2012, 02:39:55 pm »
фигня , вот решение задачи Петра на это языке..
MOD ttt;
VAR
   M1:ARRAY [8] OF INTEGER <- ( 1, 2, 3, 4, 5, 6, 7, 0 );
   M2:ARRAY [9] OF INTEGER <- ( 28, 1, 2, 3, 4, 5, 6, 7, 0 );
   M3:ARRAY [11] OF INTEGER <- ( 38, 39, 30, 1, 2, 3, 4, 5, 6, 7, 0 );
   M4:ARRAY [12] OF INTEGER <- ( 1, 2, 3, 4, 5, 6, 7, 48, 0 );
   M5:ARRAY [11] OF INTEGER <- ( 1, 2, 3, 4, 5, 6, 7, 58, 59, 50, 0 );
   M6:ARRAY [9] OF INTEGER <- ( 1, 2, 3, 68, 4, 5, 6, 7, 0 );
   M7:ARRAY [11] OF INTEGER <- ( 1, 2, 3, 78, 79, 70, 4, 5, 6, 7, 0 );
   M8:ARRAY [16] OF INTEGER <- ( 1, 2, 80, 81, 82, 3, 4, 5, 83, 84, 6, 7,  85, 86, 87,0 );


PROC PrintDiff(a,b:ARRAY OF INTEGER);
VAR i,j:INTEGER;
BEGIN
  i<-1; j<-1;
  WHILE a[i] ~= 0 DO   //общая внутренность
    WHILE a[i] ~= b[j] DO
      WRITE (b[j], '  ');
      INC(j);
    E_WHILE;
    WRITELN;
    INC(i);
    INC(j);
  E_WHILE;
  WHILE b[j] <> 0 DO      // пропущенный мною хвост
    WRITE (b[j], '  ');
    INC(j);
  E_END;
E_PROC;
BEGIN
  PrintDiff(M1,M8);
  Readln;
E_MOD.
кстати... надо будет вводить кортежи.. если хотим нормальную инициализацию всего..
« Последнее редактирование: Ноябрь 29, 2012, 02:42:17 pm от DIzer »

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #288 : Ноябрь 29, 2012, 02:43:22 pm »
обратите внимание на    i<-1  ;)

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #289 : Ноябрь 29, 2012, 02:53:14 pm »
 так что...
MOD ttt;
VAR
   M1:ARRAY [8] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 0 );
   M2:ARRAY [9] OF INTEGER := ( 28, 1, 2, 3, 4, 5, 6, 7, 0 );
   M3:ARRAY [11] OF INTEGER := ( 38, 39, 30, 1, 2, 3, 4, 5, 6, 7, 0 );
   M4:ARRAY [12] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 );
   M5:ARRAY [11] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 58, 59, 50, 0 );
   M6:ARRAY [9] OF INTEGER := ( 1, 2, 3, 68, 4, 5, 6, 7, 0 );
   M7:ARRAY [11] OF INTEGER := ( 1, 2, 3, 78, 79, 70, 4, 5, 6, 7, 0 );
   M8:ARRAY [16] OF INTEGER :=  ( 1, 2, 80, 81, 82, 3, 4, 5, 83, 84, 6, 7,  85, 86, 87,0 );


PROC PrintDiff(a,b:ARRAY OF INTEGER);
VAR i,j:INTEGER;
BEGIN
  i:=1;  j:=1;
  WHILE a[i] ~= 0 DO   //общая внутренность
    WHILE a[i] ~= b[j] DO
      WRITE (b[j], '  ');
      INC(j);
    E_WHILE;
    WRITELN;
    INC(i);
    INC(j);
  E_WHILE;
  WHILE b[j] ~= 0 DO      // пропущенный мною хвост
    WRITE (b[j], '  ');
    INC(j);
  E_WHILE;
E_PROC;

BEGIN
  PrintDiff(M1,M8);
  READLN;
E_MOD

;)
  ;D ;D ;D ;D ;D

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #290 : Ноябрь 29, 2012, 03:05:48 pm »
Так уже обговорили, что лучше do while и while do
вы хотите получить в пределе связку
WHILE .. DO 
  DO
  ...
  WHILE ..;
E_WHILE
  ;)
хотя это лучше чем
WHILE .. DO 
  DO
  ...
  WHILE ..;
END;
  ;)


valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #291 : Ноябрь 29, 2012, 03:07:52 pm »
M4:ARRAY [12] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 );По моему, тут проблемы. Нужно следить чтобы число объявленных слева соответствовало тому, что справа. И это дико не удобно.

И, кстати, тут не соответствует.
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #292 : Ноябрь 29, 2012, 03:15:31 pm »
M4:ARRAY [12] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 );По моему, тут проблемы. Нужно следить чтобы число объявленных слева соответствовало тому, что справа. И это дико не удобно.

И, кстати, тут не соответствует.

1. нет .... это для статики... а это  -  M4:ARRAY OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 ); - для динамики   
2. да блин... надо честно писать на языке... а не заниматься.. правками на скорую руку...

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #293 : Ноябрь 29, 2012, 03:19:27 pm »
M4:ARRAY [12] OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 );По моему, тут проблемы. Нужно следить чтобы число объявленных слева соответствовало тому, что справа. И это дико не удобно.

И, кстати, тут не соответствует.

1. нет .... это для статики... а это  -  M4:ARRAY OF INTEGER := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 ); - для динамики
Я не вижу тут динамики, хоть убей. Это банальная статика - все же известно на этапе компиляции.
Y = λf.(λx.f (x x)) (λx.f (x x))

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #294 : Ноябрь 29, 2012, 03:19:32 pm »
Но вообще, мое мнение: питонообразный причесанный синтаксис без изменения грамматики Оберону пошел бы явно на пользу. То есть это многократно увеличило бы шансы на то, что широкие слои проггеронаселения его хотя бы попробуют (ибо у подавляющего большенства аномально-отрицательная реакция на слово begin и end среди ключевых слов).

Ага. А от КАПСа веет прошлым веком (серьезно).

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #295 : Ноябрь 29, 2012, 03:21:24 pm »
Правильно будет:
M4: [9] int := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 )
M4: [] int := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 )
« Последнее редактирование: Ноябрь 29, 2012, 03:22:56 pm от Vartovyj »

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #296 : Ноябрь 29, 2012, 03:21:48 pm »
Но вообще, мое мнение: питонообразный причесанный синтаксис без изменения грамматики Оберону пошел бы явно на пользу. То есть это многократно увеличило бы шансы на то, что широкие слои проггеронаселения его хотя бы попробуют (ибо у подавляющего большенства аномально-отрицательная реакция на слово begin и end среди ключевых слов).

Ага. А от КАПСа веет прошлым веком (серьезно).
а ту технофошиста - мы за дерьмократию !

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #297 : Ноябрь 29, 2012, 03:23:11 pm »
Правильно будет:
M4: [9] int := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 )
M4: [] int := ( 1, 2, 3, 4, 5, 6, 7, 48, 0 )
статика, динамика
не правильно.. разрыв стиля -  новая форма без необходимости

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Модифицированный синтаксис Оберона
« Ответ #298 : Ноябрь 29, 2012, 03:30:38 pm »
Это обероновский стиль. От чудовищных конструкций типа ARRAY OF необходимо избавиться, как и от бегинов.

DIzer

  • Гость
Re: Модифицированный синтаксис Оберона
« Ответ #299 : Ноябрь 29, 2012, 03:31:22 pm »
против кортежей , кстати, никто не против?
TYPE
   MREC=RECORD
    A:ARRAY[4] OF INTEGER;
    S:CHAR;
    R:REAL;
    AA:ARRAY OF ARRAY OF CHAR; 
  E_RECORD
VAR 
     R:MREC:={
                     ( 1,2,3,4),
                      'b',
                      3,1415,
                      (('a','b')('c','d','e'))   
                     }