대수와 유사한 구문의 간단한 구조를 얻기 위해 Irony 파서를 NET 용으로 사용하고 있습니다.
2 + 3 * 5
7 + (2 * 5) a.s.o.
구문 분석이 잘 작동하며 ParseTreeNode
입력의 각 노드에 대한 참조를 얻기 위해 사용 하고 있습니다. 주어진 ParseTreeNode
노드에 대해 부모 노드 를 어떻게 얻을 수 있습니까?
글쎄요, 아주 간단합니다. 모든 노드를 순회하고 부모 : P를 선택합니다.
Stack<ParseTreeNode> stack = new Stack { yourRootTreeNode };
while(!stack.Empty)
{
var current = stack.Pop();
if(current.ChildNodes != null)
{
if(current.ChildNodes.Contains(yourChildNode))
return current; /*parent of yourChildNode */
foreach(var child in current.ChildNodes)
stack.Push(child);
}
}
ParseTreeNode를 살펴 보았는데 솔직히 필요한 정보를 얻을 수있는 것은 아무것도 볼 수 없습니다. 소스를 다운로드하고 기능을 추가하거나 내가 제공 한 코드를 사용할 수 있습니다.
또는 노드가 원하는 모든 속성을 가질 수 있도록 AST 트리를 구축하고 노드에 항상 Parent 속성이 있는지 확인할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다