Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

/magnus/back_end/Matrix/include/RingParser.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: RingParser.h,v 1.6 1999/11/24 22:17:07 bormotov Exp $
00003  */
00004 
00005 // Copyright (C) 1995 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Definitions of classes RingEltParser, MatrixParser,
00009 //           MonomialParser, PolynomialParser.
00010 //
00011 // Principal Author: Dmitry Bormotov
00012 //
00013 // Status: In development
00014 //
00015 // Usage:
00016 //
00017 // Revision History:
00018 //
00019 
00020 
00021 #ifndef _RING_PARSER_H_
00022 #define _RING_PARSER_H_
00023 
00024 #include "RingEltParser.h"
00025 #include "Polynomial.h"
00026 
00027 
00028 
00029 //---------------------------- MonomialParser -------------------------------//
00030 
00031 
00032 template <class R> class MonomialParser : public RingEltParser<R> 
00033 {
00034   
00035   friend class PolynomialParser<R>;
00036 
00037 public:
00038 
00039 
00040   //////////////////////////////////////////////////////////////
00041   //                                                          //
00042   // Constructors:                                            //
00043   //                                                          //
00044   //////////////////////////////////////////////////////////////
00045 
00046   MonomialParser(istream &istr) : RingEltParser<R>(istr) { }
00047   // Initialize the parser with the istream from which to read.
00048 
00049   // Destructor supplied by compiler.
00050 
00051   //////////////////////////////////////////////////////////////
00052   //                                                          //
00053   // Parser function:                                         //
00054   //                                                          //
00055   //////////////////////////////////////////////////////////////
00056     
00057   Monomial<R> parseMonomial( Chars& errMesg )
00058   {
00059     bool isLastMonomial;
00060     return getMonomial(errMesg, isLastMonomial);
00061   }
00062 
00063 private:
00064 
00065 
00066   //////////////////////////////////////////////////////////////
00067   //                                                          //
00068   // Data members:                                            //
00069   //                                                          //
00070   //////////////////////////////////////////////////////////////
00071 
00072   static const maxNumberOfVariables = 100;
00073 
00074 
00075   //////////////////////////////////////////////////////////////
00076   //                                                          //
00077   // Private functions:                                       //
00078   //                                                          //
00079   //////////////////////////////////////////////////////////////
00080 
00081   Monomial<R> getMonomial( Chars& errMesg, bool& isLastMonomial );
00082 
00083 
00084   /////////////////////////////////////////////////////////////////////////
00085   //                                                                     //
00086   //  Debugging stuff:                                                   //
00087   //                                                                     //
00088   /////////////////////////////////////////////////////////////////////////
00089 
00090 #ifdef DEBUG
00091 
00092   friend int main( );
00093 
00094 #endif
00095 
00096 };
00097 
00098 
00099 //--------------------------- PolynomialParser ------------------------------//
00100 
00101 
00102 template <class R> class PolynomialParser : public MonomialParser<R> 
00103 {
00104   
00105 public:
00106   
00107   
00108   //////////////////////////////////////////////////////////////
00109   //                                                          //
00110   // Constructors:                                            //
00111   //                                                          //
00112   //////////////////////////////////////////////////////////////
00113 
00114   PolynomialParser(istream &istr) : MonomialParser<R>(istr) { }
00115   // Initialize the parser with the istream from which to read.
00116 
00117   // Destructor supplied by compiler.
00118 
00119 
00120   //////////////////////////////////////////////////////////////
00121   //                                                          //
00122   // Parser function:                                         //
00123   //                                                          //
00124   //////////////////////////////////////////////////////////////
00125     
00126   Polynomial<R> parsePolynomial( Chars& errMesg );
00127 
00128 
00129 private:
00130 
00131 
00132   //////////////////////////////////////////////////////////////
00133   //                                                          //
00134   // Data members:                                            //
00135   //                                                          //
00136   //////////////////////////////////////////////////////////////
00137 
00138 
00139   //////////////////////////////////////////////////////////////
00140   //                                                          //
00141   // Private functions:                                       //
00142   //                                                          //
00143   //////////////////////////////////////////////////////////////
00144 
00145 
00146   /////////////////////////////////////////////////////////////////////////
00147   //                                                                     //
00148   //  Debugging stuff:                                                   //
00149   //                                                                     //
00150   /////////////////////////////////////////////////////////////////////////
00151 
00152 #ifdef DEBUG
00153 
00154   friend int main( );
00155 
00156 #endif
00157 
00158 };
00159 
00160 #endif
00161 
00162 
00163 

Generated at Tue Jun 19 09:49:37 2001 for Magnus Classes by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001