Jump to content
Sign in to follow this  
Che

Python: class | type | def ?

Recommended Posts

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 by Che

Share this post


Link to post
Share on other sites

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.

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...