Skip to content

Latest commit

 

History

History

phrase-mode

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Использование

  • Устанавливаем в своё виртуальное окружение ply .
pip install ply
  • Пишем код на PEVOL, примеры есть в тестах.
python3 parse.py ./tests/test7.txt
  • Запускаем все тесты, не забываем сделать chmod.
./run_tests.sh

Синтаксис

Есть несколько реализованных операторов:

  • OUT - вывод переменной или выражения.
  • + - сложение двух выражений, переменных.
  • = - присваивание значения переменной.
  • ; - окончание операции.

! Все переменные проинициализированны, и имеют нулевое значение.

Рецепты языка

1 + 1; # вычисление форсируется, 
       # но никуда не сохраняется.

; # пустая операция.

a; # вернется нуль.

b = a + 10 + c; # то есть 0 + 10 + 0 = 10;

OUT b + 1; # 10 + 1, выведется 11.

OUT c = 10 + 1; # вывод 11.

a = 1 1 1 2 2 # опускаем + и ;, но стратегия
              # подставит за нас + и ;
              # a = 1 + 1 + 1 + 2 + 2; -> 7
OUT a; # 7

1 = a; # -> 1 + a;

b = 1 = a; # -> b = a + 1;

OUT k # -> OUT k; -> 0

b = 10; OUT b; b = 20; OUT b; # -> 20 10

a = 1; OUT a; a = a + 1; OUT a; a = a + 1; OUT a;
# -> 102 101 100

aa = 11;
k = aa bb cc dd + 10 + 2 5 + 1 # k = 29

OUT ds = 1033 + 1 2; # -> 1036
OUT ds; # -> 1036

# ... и другие сценарии.

Грамматика языка

Объектами являются переменные, выражения и пустые строки.

Переменная есть присвоение выражения.

Выражение - сумма чисел и переменных.

Всё есть операции вывода, и форсирования объектов, и цепочки операций.

operation  ->  OUT object SEMICOLON operation
               | object SEMICOLON operation
               | empty

object     ->  variable
               | expression
               | empty

variable   ->  VAR ASSIGN expression  

expression ->  expression PLUS expression
               | NUM
               | VAR

Исправление ошибок

Всегда восполняются пропущенные ;, добавляются забытые знаки +, потому что у языка только одна арифметическая операция. Также в местах, где не может стоять =, меняется на +.

Обработка кода

В stdout выводит результат программы, в файл *.stdout отдается файл с исправленным кодом, а в *.stderr отдаются абсолютно все ошибки.