Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Tutto e di + - Come faccio a creare un linguaggio di programmazione?
Forum - Tutto e di + - Come faccio a creare un linguaggio di programmazione?

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Loryea (Normal User)
Pro


Messaggi: 165
Iscritto: 02/09/2011

Segnala al moderatore
Postato alle 20:35
Venerdì, 02/09/2011
Questo topic è stato chiuso dal moderatore

Cerco disperatamente di creare un linguaggio di programmazione.
Ecco i dettagli del linguaggio che ho in mente:
1. Linguaggio compilato;
2. Linguaggio complesso e più vario possibile;
3. Risultati garantiti.
Ho già un'idea sui codici e parole riservate.
I metalinguaggi sono ottimi, ma allora allegate al messaggio un tutorial pdf ed un editor di metalinguaggio se possibile.
Grazie in anticipo, ho grandi ambizioni, se diventerò famoso per i miei programmi chiunque in questo forum che mi abbia aiutato, avrà i miei prodotti gratuitamente.:hail::hail::hail::pat:

PM
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 20:59
Venerdì, 02/09/2011
La fai facile eh -.-
Devi cercarti un manuale, ce n'è uno famoso di dui non ricordo il nome, ma è il primo che trovi cercando language design (c'è un drago sulla copertina)
Dopo che hai studiato quello, c'è il seguito
Buon lavoro

PM
Avatar
delta (Member)
Rookie


Messaggi: 37
Iscritto: 25/08/2010

Segnala al moderatore
Postato alle 21:21
Venerdì, 02/09/2011
:-|

vabbè, voglio essere collaborativo.

per scrivere un *nuovo* linguaggio di programmazione bisogna sapere non bene, *benissimo*, il linguaggio che si andrà ad utilizzare.
inoltre serve moltissima teoria sui linguaggi di programmazione, tecniche di parsing, creazione di interpreti, metalinguaggi, e questo genere di cose che le puoi leggere sul dragon book, ma non basta.

per lavorare sui linguaggi di programmazione potresti studiare i sorgenti di qualche linguaggio sperimentale (p.e. il MFL scritto da manvbnet, i cui sorgenti sono disponibili su pierotofy oppure compilatori tipo GCC o il parser di Python per indicare noti progetti open source), modificare, studiare, ma *non puoi partire* con l'idea "oggi creo un linguaggio di programmazione".

per cominciare puoi generare parser a partire da grammatiche formali con ANTLR, ma devi sapere cos'è una grammatica formale e come fare in modo che non sia ambigua. enjoy.

PS: inoltre non capisco la necessità di creare un nuovo linguaggio di programmazione, se non per divertimento. se vuole essere una cosa seria... :noway:

Ultima modifica effettuata da delta il 02/09/2011 alle 21:24
PM
Avatar
damag (Normal User)
Newbie


Messaggi: 9
Iscritto: 20/08/2011

Segnala al moderatore
Postato alle 22:12
Venerdì, 02/09/2011
allora se voi  ti spiego un po io stò creando il mio di linguaggio ma il mio a delle doti particolari , tanto vale spiegarti il percorso base.
la prima cose da scegliere è cosa voi dare al tuo linguaggio velocità o portabilità , in caso avessi risposto con portabilità farai un interprete o un subcompilato che è un giusto mix invece se voi fare una cosa veloce devi creare un compiler .
Tutti ti diranno che è meglio usare un meta linguaggio , non dargli retta i meta linguaggi diventano vecchi e di conseguneza anche il tuo linguaggio diventerà vecchio , per creare un interprete banale , dal tuo interprete fai leggere una parola alla volta e la fai mettere in una variabile , dopo di che fai una prima if che dice che se quella variabile è uguale a una parola allora legge la seconda parole  e la mette in un altra variabile e se la seconda fariabile è uguale a una determinata parola gli fai fare un altra cose guarda ti posto un codice.
Codice sorgente - presumibilmente C#

  1. char *v[];
  2. fgetc(fp,2,v);
  3. if (v == "e"){//ti metto l' uguglianza classica ma in c usa lo strcmp
  4.     fgetc(fp,2,v);
  5.     if (v == "c"){
  6.        fgetc(fp,2,v);
  7.       if (v == "h"){
  8.           fgetc(fp,2,v);
  9.           if (v == "o"){
  10.               fgetc(fp,2,v);
  11.                if (v == " "){
  12.                    fgetc(fp,2,v);
  13.                    while(strcmp(v,"\n")!= 0){
  14.                             fgetc(fp,2,v);
  15.                             printf("%s",v);
  16.                    }
  17.                    printf("/n");
  18.                
  19. }
  20. }
  21. }
  22. }
  23. }


comunque se non voui fare troppo lavoro unisciti al mobi (il mio linguaggio).
per il compilato devi prendere un compiler come gcc e usarlo per il tuo linguaggio .
scrivere in c tante funzioni come printf scanf fgetc ecc e metterle in un file.h
e quando compili il tuo linguaggio invece di includere stdio.h
includi il tuo file.h e il cioco è fatto e se voi poi ti crei un compilatore c , i codici esistono già ti allego qualche cosa di turbo pascal


damag ha allegato un file: crenshaw-txt.zip (212456 bytes)
Clicca qui per scaricare il file
PM
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 23:44
Venerdì, 02/09/2011
Testo quotato

Postato originariamente da damag:

allora se voi  ti spiego un po io stò creando il mio di linguaggio ma il mio a delle doti particolari , tanto vale spiegarti il percorso base.
la prima cose da scegliere è cosa voi dare al tuo linguaggio velocità o portabilità , in caso avessi risposto con portabilità farai un interprete o un subcompilato che è un giusto mix invece se voi fare una cosa veloce devi creare un compiler .
Tutti ti diranno che è meglio usare un meta linguaggio , non dargli retta i meta linguaggi diventano vecchi e di conseguneza anche il tuo linguaggio diventerà vecchio , per creare un interprete banale , dal tuo interprete fai leggere una parola alla volta e la fai mettere in una variabile , dopo di che fai una prima if che dice che se quella variabile è uguale a una parola allora legge la seconda parole  e la mette in un altra variabile e se la seconda fariabile è uguale a una determinata parola gli fai fare un altra cose guarda ti posto un codice.
Codice sorgente - presumibilmente C#

  1. char *v[];
  2. fgetc(fp,2,v);
  3. if (v == "e"){//ti metto l' uguglianza classica ma in c usa lo strcmp
  4.     fgetc(fp,2,v);
  5.     if (v == "c"){
  6.        fgetc(fp,2,v);
  7.       if (v == "h"){
  8.           fgetc(fp,2,v);
  9.           if (v == "o"){
  10.               fgetc(fp,2,v);
  11.                if (v == " "){
  12.                    fgetc(fp,2,v);
  13.                    while(strcmp(v,"\n")!= 0){
  14.                             fgetc(fp,2,v);
  15.                             printf("%s",v);
  16.                    }
  17.                    printf("/n");
  18.                
  19. }
  20. }
  21. }
  22. }
  23. }


comunque se non voui fare troppo lavoro unisciti al mobi (il mio linguaggio).
per il compilato devi prendere un compiler come gcc e usarlo per il tuo linguaggio .
scrivere in c tante funzioni come printf scanf fgetc ecc e metterle in un file.h
e quando compili il tuo linguaggio invece di includere stdio.h
includi il tuo file.h e il cioco è fatto e se voi poi ti crei un compilatore c , i codici esistono già ti allego qualche cosa di turbo pascal  



Dimmi che scherzi.



Testo quotato

Postato originariamente da Loryea:

Ecco i dettagli del linguaggio che ho in mente:
1. Linguaggio compilato;
2. Linguaggio complesso e più vario possibile;
3. Risultati garantiti.



Idee molto chiare su come svilupparlo:rofl::rofl::rofl:

PM
Avatar
Loryea (Normal User)
Pro


Messaggi: 165
Iscritto: 02/09/2011

Segnala al moderatore
Postato alle 23:49
Venerdì, 02/09/2011
Testo quotato

Postato originariamente da D@vide:

Testo quotato

Postato originariamente da damag:

allora se voi  ti spiego un po io stò creando il mio di linguaggio ma il mio a delle doti particolari , tanto vale spiegarti il percorso base.
la prima cose da scegliere è cosa voi dare al tuo linguaggio velocità o portabilità , in caso avessi risposto con portabilità farai un interprete o un subcompilato che è un giusto mix invece se voi fare una cosa veloce devi creare un compiler .
Tutti ti diranno che è meglio usare un meta linguaggio , non dargli retta i meta linguaggi diventano vecchi e di conseguneza anche il tuo linguaggio diventerà vecchio , per creare un interprete banale , dal tuo interprete fai leggere una parola alla volta e la fai mettere in una variabile , dopo di che fai una prima if che dice che se quella variabile è uguale a una parola allora legge la seconda parole  e la mette in un altra variabile e se la seconda fariabile è uguale a una determinata parola gli fai fare un altra cose guarda ti posto un codice.
Codice sorgente - presumibilmente C#

  1. char *v[];
  2. fgetc(fp,2,v);
  3. if (v == "e"){//ti metto l' uguglianza classica ma in c usa lo strcmp
  4.     fgetc(fp,2,v);
  5.     if (v == "c"){
  6.        fgetc(fp,2,v);
  7.       if (v == "h"){
  8.           fgetc(fp,2,v);
  9.           if (v == "o"){
  10.               fgetc(fp,2,v);
  11.                if (v == " "){
  12.                    fgetc(fp,2,v);
  13.                    while(strcmp(v,"\n")!= 0){
  14.                             fgetc(fp,2,v);
  15.                             printf("%s",v);
  16.                    }
  17.                    printf("/n");
  18.                
  19. }
  20. }
  21. }
  22. }
  23. }


comunque se non voui fare troppo lavoro unisciti al mobi (il mio linguaggio).
per il compilato devi prendere un compiler come gcc e usarlo per il tuo linguaggio .
scrivere in c tante funzioni come printf scanf fgetc ecc e metterle in un file.h
e quando compili il tuo linguaggio invece di includere stdio.h
includi il tuo file.h e il cioco è fatto e se voi poi ti crei un compilatore c , i codici esistono già ti allego qualche cosa di turbo pascal  



Dimmi che scherzi.



Testo quotato

Postato originariamente da Loryea:

Ecco i dettagli del linguaggio che ho in mente:
1. Linguaggio compilato;
2. Linguaggio complesso e più vario possibile;
3. Risultati garantiti.



Idee molto chiare su come svilupparlo:rofl::rofl::rofl:



Non si tratta di quello il mio progetto, ho un progetto su Word molto preciso.
Mi aspetto che un metalinguaggio possa essere tanto flessibile da rispettare quelle tre semplici regolette e dare risultati molto flessibili ma sempre dentro quelle tre regolette.:k::k::k:

PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 0:36
Sabato, 03/09/2011
Hihihi.. lasciatelo fare, si divertirà! ;)

PM
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 9:31
Sabato, 03/09/2011
Testo quotato

Postato originariamente da damag:
Codice sorgente - presumibilmente C#

  1. char *v[];
  2. fgetc(fp,2,v);
  3. if (v == "e"){//ti metto l' uguglianza classica ma in c usa lo strcmp
  4.     fgetc(fp,2,v);
  5.     if (v == "c"){
  6.        fgetc(fp,2,v);
  7.       if (v == "h"){
  8.           fgetc(fp,2,v);
  9.           if (v == "o"){
  10.               fgetc(fp,2,v);
  11.                if (v == " "){
  12.                    fgetc(fp,2,v);
  13.                    while(strcmp(v,"\n")!= 0){
  14.                             fgetc(fp,2,v);
  15.                             printf("%s",v);
  16.                    }
  17.                    printf("/n");
  18.                
  19. }
  20. }
  21. }
  22. }
  23. }





Farai il compilatore più lungo, non funzionante e stupido mai programmato :cheer:

PM
Avatar
damag (Normal User)
Newbie


Messaggi: 9
Iscritto: 20/08/2011

Segnala al moderatore
Postato alle 10:15
Sabato, 03/09/2011
si , so programmare ma gli ho consigliato il metodo piu facile

PM
Pagine: [ 1 2 3 ] Precedente | Prossimo