Che Posted September 7, 2019 Report Posted September 7, 2019 (edited) De dragul teoriei sa presupunem ca ai vrea sa iti creezi tu un nou limbaj de programare asa cum e Python de exemplu. Cum definesti class ? Dar type ? Dar def ? Am dat in editor Go to definition pentru astea si zice ca cica "No definition found!". Dar totusi cum ar arata codul sursa pentru asa ceva ? @Nytro Edited September 7, 2019 by Che Quote
Nytro Posted September 7, 2019 Report Posted September 7, 2019 Eu am facut ceva de genul acesta pentru Shellcode compiler, insa nu stiu daca metoda mea e cea mai potrivita. In principiu ar trebui sa folosesti niste tokens (e.g. caractere speciale) si in functie de ele sa faci ce ai de facut. Nu stiu sa explic cum functioneaza, insa gasesti tutoriale legate de asa ceva si chiar si implementari de compilere C (basic) si probabil alte limbaje. Ce am facut eu a fost sa definesc un "state machine". Ideea mea e simpla: sunt in starea "x" (de exemplu starea neutra, in care astept ceva util, gen declarare de functie sau apel de functie). Apoi citesc caracter cu caracter in functie de starea mea. In limbajul meu poti defini o functie folosind "function nume_functie(parametri)" iar eu citesc doar caractere alfa numerice pana la un alt caracter. Daca e cuvantul e "function" inseamna ca utilizatorul vrea sa declare o functie si trec in starea de citire de declaratie de functie. Daca e altceva, ma astept sa vrea sa apeleze o functie si trec in starea respectiva. Pentru declararea de functie ma astept sa urmeze un spatiu (sau mai multe, sau tab-uri, in functie de cat de permisiv vrei sa fii). Daca nu sunt, poc, eroare. Daca da, trec in starea de citire a numelui functie (alpha numeric) pana la intalnirea caracterului "(" care indica faptul ca urmeaza parametrii). Si tot asa... Nu stiu care solutie ar fi mai buna, solutia mea mi s-a parut simpla, dar poate sa nu fie cea mai buna si mai practica. Daca vrei sa o folosesti, ia o foaie si un pix si deseneaza state machine-ul, cum vrei sa arate si prin ce caractere in ce alte stari sa ajunga. PS: La trecerea dintre stari trebuie sa salvezi niste date, cum ar fi numele unei functii. 1 2 Quote
Che Posted September 9, 2019 Author Report Posted September 9, 2019 Dar la class sau la type care ar fi rationamentul? M-ar interesa in special la class. Eu credeam ca pentru class, de exemplu, ar trebui sa existe un alt header care sa defineasca ce este class pentru python.exe. Eram curios cum ar arata asa ceva. Multumesc mult! Quote
AlStar Posted September 9, 2019 Report Posted September 9, 2019 Python e interpretat, deci poti arunca un ochi peste cum e facut JS. In JavaScript: The Good Parts cred ca am vazut un exemplu de state machine. 1 Quote