This is only an observation, those functions do not need to be internally related at all.
So I'd say that:
FrontEnd`UndocumentedTestFEParserPacket[input_String, strip:(True|False)
]:={
BoxData @
If[strip, StripBoxes, Identity] @
FrontEnd`ReparseBoxStructurePacket[input]
, StandardForm
}
additionally FrontEnd`ReparseBoxStructurePacket
can also take a box expression as input, while FrontEnd`UndocumentedTestFEParserPacket
can only handle strings.
FrontEndExecute @
FrontEnd`ReparseBoxStructurePacket @
RowBox[{"Test", "[", "Test", "[", "1", "]", "]"}]
(* Out[]:= RowBox[{"Test", "[", RowBox[{"Test", "[", "1", "]"}], "]"}] *)
Nice question btw, thanks.