Ultimamente ho giocato con lo scrivere il mio linguaggio di programmazione, seguendo l'eccellente Crafting Interpreters ma ho colpito qualcosa di intoppo.
Vorrei estendere il parser per accettare dichiarazioni di variabili sotto forma di: var x,y,z
e per consentire di decomprimere come [x,y,z]=[1,2,3]
(notando che jlox non supporta ancora gli array). Infine mi piacerebbe consentire un'istruzione in
in modo che tu possa fare: for(x in a)
o testare:
var a = {'Larry': 1, 'Curly': 2}
var x = 'Moe'
var b = x in a
print b
L'output dovrebbe essere false
. Cioè: l'istruzione in
è sensibile al contesto perché si comporta sia come un'istruzione assegnatore / iteratore che come un test booleano. Questa sensibilità al contesto è particolarmente problematica perché durante l'analisi dovresti impiegare qualche tipo di lookback per vedere se ti trovi in una dichiarazione di loop o se sei "solo un'espressione".
Ad ogni modo - dato il jlox - mi stavo chiedendo se c'è qualcosa di banale che mi manca per implementare quanto sopra, o se sarà un compito piuttosto peloso?