Size: a a a

2020 March 19

ХЛ

Хороший Лисичко in Lisp Forever
(eq 'a 'a)
источник

l

lispbot in Lisp Forever
knet> ERROR:: symbol {eq 69} not found :: 0
источник

ХЛ

Хороший Лисичко in Lisp Forever
:c
источник

AP

Alex Peresmeshnik in Lisp Forever
Ща , там пока пересмотр компилятора )
источник

AP

Alex Peresmeshnik in Lisp Forever
Сунул туда пока полуготовый компилятер, но там от канона отошли, добавили квадратные скобки и лисп перестал быть лиспом
источник

AP

Alex Peresmeshnik in Lisp Forever
(defn add3 [a] (+ a 3))
источник

l

lispbot in Lisp Forever
knet> 0
источник

AP

Alex Peresmeshnik in Lisp Forever
источник

AP

Alex Peresmeshnik in Lisp Forever
Давайте подумаем над универсальным токенайзером для интерпретатора
источник

VM

Vyacheslav Mikushev in Lisp Forever
forth - универсальный токенайзер.:)
источник

VM

Vyacheslav Mikushev in Lisp Forever
Все - слово и разделено пробелами.:)
источник

AP

Alex Peresmeshnik in Lisp Forever
Vyacheslav Mikushev
Все - слово и разделено пробелами.:)
а как же строки' ? )
источник

VM

Vyacheslav Mikushev in Lisp Forever
Там нет строк.:)
источник

VM

Vyacheslav Mikushev in Lisp Forever
Только целые числа.
источник

AP

Alex Peresmeshnik in Lisp Forever
Ну там нет, а в лиспе есть ))
источник

AP

Alex Peresmeshnik in Lisp Forever
Думаю над универсальным решением, чтобы лисп строку на токены разбивать
источник

VM

Vyacheslav Mikushev in Lisp Forever
Там же должно быть просто - разбиваем по пробелам, если встречаем скобку, то новый блок. Или я что-то упускаю?
источник

AP

Alex Peresmeshnik in Lisp Forever
Vyacheslav Mikushev
Там же должно быть просто - разбиваем по пробелам, если встречаем скобку, то новый блок. Или я что-то упускаю?
Да, но хочется минимальный универсальный скелет набросать, чтобы на любом другом ЯП без проблем повторить интерпретатор
А для этого надо подумать что учитывать, что парсить в переданной строке. Это ведь не только набор скобок но и те же макросы
источник

VM

Vyacheslav Mikushev in Lisp Forever
Парсить все, кроме ридер-макросов. Токенайзеру же плевать какие там конструкции, ему нужно создать аст. А макросы уже должны вторым этапом раскрываться, причем, итерационно, пока не останется нераскрытых макросов.
источник

AP

Alex Peresmeshnik in Lisp Forever
Vyacheslav Mikushev
Парсить все, кроме ридер-макросов. Токенайзеру же плевать какие там конструкции, ему нужно создать аст. А макросы уже должны вторым этапом раскрываться, причем, итерационно, пока не останется нераскрытых макросов.
Ну смотри, тот же распространенный вариант парсера на питоне: https://norvig.com/lispy.html

>>> program = "(begin (define r 10) (* pi (* r r)))"
>>> tokenize(program)
['(', 'begin', '(', 'define', 'r', '10', ')', '(', '*', 'pi', '(', '*', 'r', 'r', ')', ')', ')']
источник