00001 00010 #ifndef IMPPARSER_H_ 00011 #define IMPPARSER_H_ 00012 00013 #include "../TokenSource.h" 00014 #include "UnresOpSeq.h" 00015 #include "OpSeq.h" 00016 00017 00018 namespace green 00019 { 00020 00021 00025 class ImpParser 00026 { 00027 private: 00028 void parseBinOp(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00029 void parseUnOp(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00030 void parseCall(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00031 void parseGoto(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00032 void parseGotoif(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00033 void parseLabel(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00034 void parseDeclare(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00035 void parseVarLit(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00036 void parseVarOnly(TokenIterator& curToken,UnresOpSeqPtr unOpSeq); 00037 00038 OpSeq::OperatorEnum convertBinOp(TokenIterator& curToken); 00039 OpSeq::OperatorEnum convertUnaryOp(TokenIterator& curToken); 00040 OpSeq::OperatorEnum convertGotoOp(TokenIterator& curToken); 00041 OpSeq::FuncEnum resolveFuncName(std::string& funcName); 00042 00043 00044 public: 00053 UnresOpSeqPtr parseImperative(TokenIterator& curToken, 00054 VariableTableTemplatePtr whoBelongs,int ifInit); 00055 00056 }; 00057 00058 00059 } 00060 00061 #endif