Интерпретатор QSet
#
c++
qset
esolang
ctf
QSet - эзотерический язык программирования из таска на ABCTF-2016. Программа на нём представляет собой последовательноть пар списков символов.
Формальный синтаксис:
symbol = ALPHA
multiset = symbol / symbol " " multiset
instruction = multiset "|" multiset
program = instruction / instruction "\n" program
Семантика:
multiset<symbol> state = input
while True:
for (L, R) : (multiset<symbol>, multiset<symbol>) in program:
if R ⊆ S:
state = state - R + L
break
if state is not modified:
break
multiset<symbol> output = state
Вход и выход - конечные последовательности натуральных чисел.
Символы i0
, i1
и т.д. содержат входную последовательноть,
а символы o0
, o1
, … используются для вывода.
Об этом проекте
Просто интерптератор для интересного, на мой взгляд, эзотерического языка. Сделано just4fun пока мне было нечем заняться на паре. Кстати, этот таск на CTF я решил написав оптимизирующий компилятор специального недоязыка в QSet, но если я буду еще и райтапы в проектах тут расписывать, сайт просто утонет в контенте.
Примечания
- Референсный интерпретатор
- Райтап
- Другой райтап (тоже не мой, но на русском)