It’s possible to implement finite state machines in Verilog using the both behavioral or structural specification. Using the first one is (as always) more intuitive, but in this case can require more structures and specification. It’s important to mention that when using the second, we have to do all the minimization and extraction of the logic functions in advance.
Here we have a simple way of describing a FSM using the behavioral specification:
This is a pretty comprehensive way of describing the desired behavior, note that in the assignment z = (y == C) what is happening is: z is receiving the result of a logic expression, this means that if the circuit is in state C, then z = 1.
In this other example we have the same circuit, but implemented using a structural specification: