Sto provando a calcolare i set FIRST e FOLLOW di un CFG (usando Python).
Per fare questo ho bisogno di riconoscere terminali e non-terminali. Posso (come umano) leggerli, ma mi chiedevo se esistesse una logica computazionale per inferire terminali e non-terminali, se si è data solo la grammatica.
Sembra che sia necessario costruire l'albero di analisi e quindi etichettare terminali e non-terminali? Un terminale è un nodo che non ha figli.
Si potrebbe anche usare la definizione di "terminali" e "non-terminali":
Terminals
A terminal is a symbol which does not appear on the left-hand side of any production.
Nonterminals
Nonterminals are the non-leaf nodes in a parse tree.
O forse i non-terminali sono anche tutti quelli che non rientrano nella definizione di terminali.