Research Article

Software Toolchain for Large-Scale RE-NFA Construction on FPGA

Algorithm 1

Modified McNaughton-Yamada construction (MMY) converting a regular expression parse-tree to an RE-NFA with a modular and uniform structure.
Notations:
[value]Content value of node .
[leftrightchild] Left, right, or only child of node .
[next]    Set of next-state transitions of state .
[char]     Set of matching characters of state .
Macros:
CREATE_STATE ( ):
      Create a new state in the state transition table
      
CREATE_PSEAUDO():
Create a special pseudo-state for later use.
ADD_PSEUDO_NEXT ( ):
For every state , add the state set [next]
to [next]. Pseudo-state is deleted afterward.
PROCEDURE RE2NFA ( , , )
Root node of the parse (sub-)tree.
  Set of immediate previous states.
  Set of states transitioning directly outside of .
The resulting state transition table.
BEGIN
;
while
if [value] = OP_CONCAT
RE2NFA ( [left], );
[right];
else if  [value] = OP_UNION
RE2NFA ( [left],
RE2NFA ( [right],
return ;
else if  [value] = OP_CLOSURE
CREATE_PSEUO();
;
RE2NFA ( [child], ;
ADD_PSEUDO_NEXT ;
return   ;
else //
CREATE_STATE
[char] [value];
foreach   in
// add -transitions
[next] [next]
end foreach
return ;
end if
end while
// error: [right] cannot be
END