I need to write a regular expression given by the following bnf form:
<expr_num>:=<var>|<sign>|"("<expr_num>")"|<expr_num><operator_num><expr_num>
My attempt:
var=\w*
sign=+|-
operator_num=[+|-|*|/]
However, when I put in the phrase <expr_num><operator_num><expr_num>
the regular expression is in infinite recursion due <expr_num>
at the beginning.
My attempt: (?<expr_num>(?<var>(\[(\w+\d*)\]))|(?<sign>([\+|\-]\g<sign>)|(\d*))|(\((\g<expr_num>)\))|(\g<expr_num>[+|*|-|\/]{1}\g<expr_num>))$
Error: recursive call could loop indefinitely
How to solve this problem? How to create parser in C# for this expression?