// Create as much of the parse tree as possible. public override int CreateParseSubTree(ref CLexicalAnalyzer plexAnal, ref CSymbolTable pSymbolTable) { CToken pToken = null; if ((CLexicalAnalyzer.LEX_FAIL == plexAnal.GetNextToken(ref pToken, ref pSymbolTable)) || pToken == null || !pToken.IsELSEStatement()) { //throw (C_UM_ERROR_INTERNALERR); } //Look for a statement CParserBuilder builder = new CParserBuilder(); m_pStatement = (CStatement)builder.CreateParser(ref plexAnal, STATEMENT_TYPE.STMT_asic); if (null != (m_pStatement)) { int i32Ret = m_pStatement.CreateParseSubTree(ref plexAnal, ref pSymbolTable); if (i32Ret == 0) { //ADD_ERROR(C_ES_ERROR_MISSINGSTMT); } else { return(1); } } return(0); }