def extract_terminals(grammar):
non_terminals = set(grammar.keys())
terminals = set()
for production in grammar.values():
for rule in production:
for symbol in rule:
if not symbol.isupper() and symbol not in ['→', '|', 'ε']:
terminals.add(symbol)
return terminals
# Example grammar (as a dictionary)
# A → aB | b
# B → c | ε
grammar = {
"A": ["aB", "b"],
"B": ["c", "ε"]
}
terminals = extract_terminals(grammar)
print("Terminal symbols:", terminals)