⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gparsetree.cpp

📁 一个非常有用的开源代码
💻 CPP
字号:
/*	Copyright (C) 2006, Mike Gashler	This library is free software; you can redistribute it and/or	modify it under the terms of the GNU Lesser General Public	License as published by the Free Software Foundation; either	version 2.1 of the License, or (at your option) any later version.	see http://www.gnu.org/copyleft/lesser.html*/#include "GParseTree.h"#include "GGrammar.h"GParseTreeNode::GParseTreeNode(GGrammarRule* pRule){	m_pRule = pRule;	m_nStartPos = 0;	m_nEndPos = 0;}GParseTreeNode::~GParseTreeNode(){}// **********************************************************GStructureParseTreeNode::GStructureParseTreeNode(GStructureGrammarRule* pRule) : GParseTreeNode(pRule){	m_eType = PTNT_STRUCTURE;	m_nFieldCount = pRule->m_pFields->GetSize();	m_ppChildren = new GParseTreeNode*[m_nFieldCount];	m_nChildCount = 0;}GStructureParseTreeNode::~GStructureParseTreeNode(){	int n;	for(n = 0; n < m_nChildCount; n++)		delete(m_ppChildren[n]);	delete(m_ppChildren);}void GStructureParseTreeNode::AddChild(GParseTreeNode* pChild){	if(m_nChildCount >= m_nFieldCount)		GAssert(false, "Error, too many children");	m_ppChildren[m_nChildCount] = pChild;	m_nChildCount++;}GParseTreeNode* GStructureParseTreeNode::GetChild(int n){	if(n >= m_nChildCount)	{		GAssert(false, "Not that many children");		return NULL;	}	return m_ppChildren[n];}// **********************************************************GListParseTreeNode::GListParseTreeNode(GListGrammarRule* pRule) : GParseTreeNode(pRule){	m_eType = PTNT_LIST;	m_pChildren = new GDynamicArray(sizeof(GParseTreeNode*), 32);}GListParseTreeNode::~GListParseTreeNode(){	int nCount = GetChildCount();	int n;	for(n = 0; n < nCount; n++)		delete(GetChild(n));	delete(m_pChildren);}// **********************************************************GNonDetParseTreeNode::GNonDetParseTreeNode(GNonDetGrammarRule* pRule) : GParseTreeNode(pRule){	m_eType = PTNT_NONDET;	m_nWhichOne = -1;	m_pChild = NULL;}GNonDetParseTreeNode::~GNonDetParseTreeNode(){	delete(m_pChild);}// **********************************************************GTextParseTreeNode::GTextParseTreeNode(ParseTreeNodeTypes ePTNT, GGrammarRule* pRule) : GParseTreeNode(pRule){	m_eType = ePTNT;}GTextParseTreeNode::~GTextParseTreeNode(){}// **********************************************************GSyntaxParseTreeNode::GSyntaxParseTreeNode(GGrammarRule* pRule) : GParseTreeNode(pRule){	m_eType = PTNT_SYNTAX;}GSyntaxParseTreeNode::~GSyntaxParseTreeNode(){}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -