Buon giorno, sto cercando di trovare un modo per programmare un generatore di espressioni lambda in java con questa grammatica context-free, e vorrei chiedere; quale sarebbe il modo migliore per affrontare questo problema ed essere in grado di manipolarli con funzioni di calcolo lambda di base come la riduzione beta, la conversione alfa, ecc.?
Ho provato a farlo con le stringhe, ma è stato consigliato di interromperlo perché usare le stringhe mi limiterà a ciò che posso fare.
Ecco la grammatica Context Free che ho preso su internet:
<expr> ::= <var>
| <func> <arg> # This is an application.
| lambda <var> . <expr> # This is an abstraction.
<func> ::= <var>
| (lambda <var> . <expr>)
| <func> <arg>
<arg> ::= <var>
| (lambda <var> . <expr>)
| (<func> <arg>)
<var> ::= a| b| .... | Z