Consider the following definition of a lexical token id for an identifier in a programming language, using extended regular expressions: \[ \text{letter} \;\;\rightarrow\;\; [A\!-\!Za\!-\!z] \] \[ \text{digit} \;\;\rightarrow\;\; [0\!-\!9] \] \[ \text{id} \;\;\rightarrow\;\; \text{letter (letter | digit)}^* \] Which one of the following Non-deterministic Finite-state Automata with $\epsilon$-transitions accepts the set of valid identifiers? (A double-circle denotes a final state). 
Identifiers in most programming languages must start with a letter, followed by letters or digits. This is why the automaton must force a letter first, and only then allow repetition of both letters and digits.
A
B
C
D
To determine which Non-deterministic Finite-state Automata (NFA) with ε-transitions accepts the set of valid identifiers based on the given regular expression:
\[ \text{id} \;\;\rightarrow\;\; \text{letter (letter | digit)}^* \]
we need to understand and construct the NFA that adheres to the following rules:
Let's analyze the provided NFAs to determine which one implements this logic correctly.
Analyzing each option carefully, we conclude that option C correctly represents the NFA for the given regular expression. Here’s why:
Therefore, the correct answer is option C, which accurately represents the given regular expression for an identifier.