[nem-pl] Interpreter
Kamil Skalski
kamil.skalski at gmail.com
Tue Dec 14 16:54:52 CET 2004
Kilka myśli na temat interpretera nemerle:
1. ogólnie powinno to chyba działać jako evaluator wyrażeń pisanych z
palca (za każdym razem traktujemy to co napisano jako niezależne
wyrażenie)
2. special case na 'using Jakis.Namespejs;'
3. tak czy inaczej trzeba też zrobić kilka wbudowanych komend, typu
'reference System.Windows.Forms.dll'
4. Piszemy wyrażenia: expr1; expr2; expr3;; (;; commituje to co
napisaliśmy do evaluacji)
5. Jak wyrażenie ma zwracany typ inny niż void, to potraktować to ToStringiem()
6. niedługo poprawię kompilator, żeby dało się do pamięci kompilować -
wtedy będzie dość łatwo :
- zresetować kilka struktur danych w kompilatorze (najlepiej zostawić
to co władowało się z zewnętrznych bibliotek, bo to pewnie jest
odpowiedzialne za długą inicjalizację kompilatora na początku)
- uruchomić z kompilacją do assembly w pamięci
- przez reflection invoka metody z tej assembly
7. jak już te proste rzeczy się zrobi, to fajne byłoby spamiętywanie
starych wartości:
- def x = 5;;
----- evaluated
System.Console.WriteLine (x);
---- evaluated
---- 5
itd.
Na razie najprostszy pomysł jak to zrobić, to po kompilacji wyrażenia
spytać kompilator jakie są dostępne zmienne lokalne, stworzyć
dodatkowy kod, który zwróci tablicę zainicjalizowaną tymi zmiennymi.
Przy evaluacji następnego wyrażenia przekazać tą tablicę i zdefiniować
na nowo zmienne pobierając wartości z tej tablicy.
8. możnaby też wypisywać typy zmiennych, które właśnie się pojawiły,
tak jak w smlu czy ocamlu
--
Kamil Skalski
http://nazgul.omega.pl
More information about the devel-pl
mailing list