00001 #pragma once 00002 00003 #include <vector> 00004 #include <map> 00005 #include <string> 00006 00007 class Parameter; 00008 00009 class SyntaxTree 00010 { 00011 public: 00012 typedef std::pair<int, int> Range; 00013 typedef std::vector<std::string> Labels; 00014 typedef std::map<Range, Labels> Coll; 00015 00016 void Add(int startPos, int endPos, const std::string &label, const Parameter ¶ms); 00017 void AddToAll(const std::string &label); 00018 00019 const Labels &Find(int startPos, int endPos) const; 00020 00021 void SetHieroLabel(const std::string &label) { 00022 m_defaultLabels.push_back(label); 00023 } 00024 00025 00026 protected: 00027 00028 Coll m_coll; 00029 Labels m_defaultLabels; 00030 }; 00031 00032