Compilatore Z80 IV

 Credevo di scrivere molto più codice in Livecode per implementare due nuovi fondamentali comandi PROC/ENDPROC FUNC/ENDFUNC

Invece con una buona analisi, con un pugno di righe, ecco qui due istruzioni fondamentali:


case "PROC"

case "FUNC"

if gaProc[v_Token2]["Nome"] = v_Token2 then

xAbort "[ERROR] PROC/FUNC already declared"

else

put v_Token2 into gaProc[v_Token2]["Nome"] //Aggiungo il nome della procedura all'elenco

put 0 into gaProc[v_Token2]["NParametri"]

put true into gProcedura //Indica al output che si sta generando una procedura

xOutPut v_Token2&":" //Nome_procedura:

repeat for each item tVar in v_RestoTesto2

add 1 to gaProc[v_Token2]["NParametri"] //Incremento il numero di parametri

put (tVar) & comma after gaProc[v_Token2]["Parametri"] //Aggiungo

xSeNonEsisteCrea tVar,,True //Crea una variabile per ogni parametro esistente

end repeat

end if

break

case "ENDFUNC"

case "ENDPROC"

xOutPut "ret"

put false into gProcedura

break


Ovviamente poi nella fase di generazione del codice Z80 ci sono tutte le dichiarazioni delle variabili/parametri 

distinguendo tra variabili testo e numeriche. Oltre alla valorizzazione della variabile di ritorno per le variabili.

Come da mia idea iniziale li dati di ritorno delle funzioni sarò contenuto nelle variabili globali _Value e _Value$

come succede per "it" in Livecode.

Commenti

Post popolari in questo blog

Amstrad CPC 472

Amstrad Computer

Sinclair QL