GetXMLParseTree
STD.System.Debug.GetXMLParseTree
STD.System.Debug.GetXMLParseTree
System.Debug.GetXMLParseTree
Debug.GetXMLParseTree
GetXMLParseTree
( )
Return:
GetXMLParseTree returns a STRING value.
The GetXMLParseTree function returns
a textual representation of the match that occurred, using XML tags to
indicate nesting. This function is only used within the RECORD or TRANSFORM
structure that defines the result of a PARSE operation. This function is
useful for debugging PARSE operations.
Example:
IMPORT STD;
r := {string150 line};
d := dataset([
{'Ge 34:2 And when Shechem the son of Hamor the Hivite, '+
'prince of the country, saw her, he took her, and lay with her, '+
'and defiled her.'},
{'Ge 36:10 These are the names of Esaus sons; Eliphaz the son of '+
'Adah the wife of Esau, Reuel the son of Bashemath the wife of '+
'Esau.'}
],r);
PATTERN ws := [' ','\t',',']*;
PATTERN patStart := FIRST | ws;
PATTERN patEnd := LAST | ws;
PATTERN article := ['A','The','Thou','a','the','thou'];
TOKEN patWord := PATTERN('[a-zA-Z]+');
TOKEN Name := PATTERN('[A-Z][a-zA-Z]+');
RULE Namet := name OPT(ws 'the' ws name);
PATTERN produced_by := OPT(article ws) ['son of','daughter of'];
PATTERN produces_with := OPT(article ws) ['wife of'];
RULE progeny := namet ws ( produced_by | produces_with ) ws namet;
results := RECORD
STRING LeftName := MATCHTEXT(Namet[1]);
STRING RightName := MATCHTEXT(Namet[2]);
STRING LinkPhrase := IF(MATCHTEXT(produced_by[1])<>'',
MATCHTEXT(produced_by[1]),
MATCHTEXT(produces_with[1]));
STRING Tree := STD.System.Debug.getXMLParseTree();
END;
outfile1 := PARSE(d,line,progeny,results,SCAN ALL);
/* the Tree field output
looks like this:
<namet>
<name>Shechem</name>
</namet>
<ws> </ws>
<produced_by>the son of</produced_by>
<ws> </ws>
<namet>
<name>Hamor</name>
</namet>
*/