Skip to content

Latest commit

 

History

History
124 lines (110 loc) · 5.03 KB

File metadata and controls

124 lines (110 loc) · 5.03 KB

Язык NoName - Описание языка

Структура программы

  1. Пробелы значимы и определяют порядок выполнения функций(Пример снизу: сначала запустится FUNCb( b) потом FUNCd( D), затем FUNCс( С), FUNCa( A), FUNCe( E)).
|  FUNCa( A);
|   FUNCb( B);
|   FUNCc( C);
|    FUNCd( D);
|  FUNCe( E);
  1. Сначала идёт определение всех функций, которые могут быть использованы в программе.
  2. После объявления всех функций должна быть в начале строки main, что указывает на начало программы.
  3. После main разрешено:
    1. Перед вызовом следующих конструкций должен стоять хотя бы один пробел!
    2. Вызывать функции
    3. Унифицировать атомы
    4. Использовать or -> для этого нужно в одной строке вызвать две функции и поставить между ними ",":
      FUNChel( A),FUNChee( A B C);
    
    1. Использовать and -> для этого нужно в разных строках вызвать функции и в конце каждой поставить ";":
      FUNCa( A);
      FUNCb( B);
    

Ключевые слова:

def; int; string; main; struct

Переменные

Чтобы использовать переменную в функции нужно указать имя переменной. Имя переменной начинается с большой латинской буквы, после которой идёт возможно пустая последовательность латинскийх букв в нижнем регистре.

Конструкторы переменных

Объявляется при помощи круглых скобок, внутри которых находятся возможно пустое множество из переменных и конструкторов. Между переменными должен быть хотя бы один пробел. Объявление:

(struct A (struct A B)) // конструктор от переменной и другого конструктора

Функции

  1. Объявление функции. В начале строки должно стоять def, затем следует название функции, которое начинает с FUNC, после которого могут быть только латинские буквы в нижнем регистре. Потом следует аргументы функции через пробел. После аргументов не должно быть пробелов!!! Потом должно стоять "\n" и "{", после которого идёт тело. Каждая строчка должна начинаться с двух пробелов или больше. На последней строке после тела функции должно стоять "}".
def FUNCwtf A B
{
  FUNCwtf( A B);
}

def FUNCaaa A B (struct C D)
{
  FUNCababb(A B);
}
  1. В функции можно вызывать другие функции
  2. Вызов функции, аргументы должны быть через пробел ими могут быть только конструкторы и переменные: <name>(<parametrs>);
  FUNCname( A B C);
  FUNCani();

Комментарии

Есть два типа комментариев:

  1. Однострочные: <something>// <comment>
    1. Комментарии можно писать между объявлением функция, после определения параметров функции, в main, после ";" в main
    2. Нельзя использовать пробелы перед комментариями!!!
     // можно
    
     def FUNCk A// можно
     { 
     aaaaaaaaaaaaaaaaaaaaaa
     }// можно
    
     // можно
     main//можно
       int A:=123;//можно
       int B:=123; // нельзя
     // можно
      // нельзя
    
  2. Многострочные(многострочные комментарии могут быть в многострочных комментариях): /*<something>*/

Унификация

Унифицировать можно атомы. Синтаксис: (ATOM)==(ATOM);:

 ((struct A)))==((struct A (struct B)));

Примеры программ на языке:

main
// comment
  (A)==(B);
  ((struct A))&&((struct A (struct B C)));
def FUNCb A
{
 // body
}

def FUNCc (struct A)
{
 // body
}

main
// begin program
  FUNCb( A),FUNCb( (struct A));
  FUNCb( (struct C));//call function
def FUNCb
{
 // body
}
  
main
    FUNCb();