Esecuzione del codice all'interno dei delimitatori [chiuso]

0

C'è un modo per eseguire un blocco di codice in un ciclo, in questo modo:

[ some code goes here ]

Dove i delimitatori sono "[" e "]" e consentono anche blocchi annidati, cioè:

[the user can create another loop[]]

Sto creando un parser per un linguaggio che implementa tale semantica, e legge il codice di un byte / carattere alla volta poiché i comandi sono tutti singoli caratteri e perché la sintassi dovrebbe essere molto minimale (che è abbastanza importante ), e attualmente sono bloccato in questa cosa del ciclo.

Ho provato ad abbinare il byte (dal momento che sto leggendo solo 1 carattere alla volta) con un carattere "[" e quindi impostando una variabile globale attraverso l'istanza, ma questo sembra interrompersi quando le istruzioni sono nidificate, e non sembra funzionare.

Qualsiasi aiuto (in Python, possibilmente) è apprezzato!

EDIT: Conforme a ciò che @mattnz ha commentato, la domanda & post è stato ulteriormente chiarito.

    
posta knight 26.08.2013 - 09:05
fonte

1 risposta

1

In effetti, puoi usare una variabile che memorizza lo stato corrente o il contesto corrente. Se hai un problema con i blocchi annidati, è perché stai memorizzando solo uno stato alla volta. Usare una pila può aiutare.

Per ulteriori informazioni, consulta "Algoritmo di corrispondenza tra parentesi" in Google. Troverai un sacco di informazioni su come abbinare parentesi annidate.

Inoltre, il commento di Kilian Foth alla tua domanda è particolarmente prezioso : se sei già bloccato all'inizio con un problema come la corrispondenza tra parentesi, è un buon segno che potresti voler imparare un po 'di più sull'analisi prima di avventurarti nella costruzione di un parser da solo.

    
risposta data 26.08.2013 - 09:52
fonte

Leggi altre domande sui tag