LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Мисье может попробовать поупражняться сам в метапрограммтровании, когда важна структура текста программы.

Вот макрос на отступах:

определение-синтаксиса (определение-синтаксиса-цикла форма)
  выбор-синтаксиса форма ()
    (_ русский английский)
      #' определение-синтаксиса (русский форма)
           выбор-синтаксиса форма (для)
             (_ (для (А Б) . В) . Г)
               #` английский ((А Б) . #,(преобразовать-слова-цикла #'В)) . Г
             (_ (А Б) . Г) 
               #' английский ((А Б)) . Г
             (_ . А) 
               #' английский . А

Не вижу проблемы в многострочных макросах с отступами на Си.

Единственное, что потребуется - это дополнительное ключевое слово для блока:

x = x + 1;
{
  int x;
  x = 5;
  f(x);
}

=>

x = x + 1
block
  int x
  x = 5
  f(x)
#define MACRO(num, str) {\ 
            printf("%d", num);\ 
            printf(" is");\ 
            printf(" %s number", str);\ 
            printf("\n");\ 
           } 

=>

#define MACRO(num, str)
  block
    printf("%d", num) 
    printf(" is")
    printf(" %s number", str)
    printf("\n")

Исходная версия monk, :

Мисье может попробовать поупражняться сам в метапрограммтровании, когда важна структура текста программы.

Вот макрос на отступах:

определение-синтаксиса (определение-синтаксиса-цикла форма)
  выбор-синтаксиса форма ()
    (_ русский английский)
      #' определение-синтаксиса (русский форма)
           выбор-синтаксиса форма (для)
             (_ (для (А Б) . В) . Г)
               #`(английский ((А Б) . #,(преобразовать-слова-цикла #'В)) . Г)]
             (_ (А Б) . Г) 
               #' английский ((А Б)) . Г
             (_ . А) 
               #' английский . А

Не вижу проблемы в многострочных макросах с отступами на Си.

Единственное, что потребуется - это дополнительное ключевое слово для блока:

x = x + 1;
{
  int x;
  x = 5;
  f(x);
}

=>

x = x + 1
block
  int x
  x = 5
  f(x)
#define MACRO(num, str) {\ 
            printf("%d", num);\ 
            printf(" is");\ 
            printf(" %s number", str);\ 
            printf("\n");\ 
           } 

=>

#define MACRO(num, str)
  block
    printf("%d", num) 
    printf(" is")
    printf(" %s number", str)
    printf("\n")