# Drawing a NFA for a string

I have these grammar rules defined as follows,

FDL -> FDEF FDL | ε
FDEF -> #feature #: FEXP
FEXP -> #op #( FLIST #)
FLIST -> FEXP #, FEXP | #feature


I know how to derive the derivative tree for a given string from this, but how do I draw a NFA for this string {#feature #: #op #( #feature #)}*. I have seen many examples which they draw the NFA from a regular expression, if so can I consider this string as a regular expression? If not how can I draw it?

I will leave the actual drawing up to you, but I will describe it here. You can draw a directed graph, with a start state that follows the input #feature to another node which follows an edge to #: to #op to #( to #feature to #). The node that we land on after #) is the accept state. If it any point, we read some input that does not allow us to follow that path, we immediately travel to another state (in this case, a designated reject state) with no output paths.
Our accept state will only have one out edge, which we follow on the input #feature. This takes us back to where we traveled after our start state. If we read any other input from our accept state, we move to the designated reject state.