Sto giocando un po 'con la mia C come la grammatica DSL e vorrei qualche oppio.
Ho riservato l'uso di "(...)" per le invocazioni. ad esempio:
foo(1,2);
La mia grammatica supporta "chiusure finali", proprio come i blocchi di Ruby che possono essere passati come ultimo argomento di una chiamata.
Attualmente il mio supporto grammaticale chiude le chiusure in questo modo:
foo(1,2)
{
//parameterless closure passed as the last argument to foo
}
o
foo(1,2) [x]
{
//closure with one argument (x) passed as the last argument to foo
print (x);
}
Il motivo per cui utilizzo [args] invece di (args) è che (args) è ambiguo:
foo(1,2) (x)
{
}
In questo caso non è possibile stabilire se foo si aspetta 3 argomenti (int, int, closure (x)) o se foo si aspetta 2 argomenti e restituisce una chiusura con un argomento (int, int) - > chiusura (x) Quindi questo è praticamente il motivo per cui uso [] per ora.
Potrei cambiarlo in qualcosa tipo:
foo(1,2) : (x)
{
}
o
foo(1,2) (x) ->
{
}
Quindi la domanda attuale è, quale pensi sia la migliore?
[...] è un po 'ostile al polso.
let x = [a,b]
{
}
idee?