17 std::cerr <<
"errorUnexpectedToken : '" << parser.getFileName() <<
"' line " << parser.getLine() << std::endl;
18 std::cerr <<
"unexpected token '" << token <<
"'" << std::endl;
26 return parser.getStrComposedOf(
"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
35 if(parser.isMatch(
"//")){
36 if(currentComment !=
""){currentComment +=
"\n";}
37 currentComment +=
"//" + parser.getUntilKeyWithoutPatern(
"\n");
38 }
else if(parser.isMatch(
"/*")){
39 if(currentComment !=
""){currentComment +=
"\n";}
40 currentComment +=
"/*" + parser.getUntilKey(
"*/");
53 if(!parser.isMatch(
"template")){
return false;}
54 if(!parser.isMatch(
"<")){
return false;}
56 currentTemplate = parser.getUntilKeyWithoutPaternRecurse(
">",
"<").split(
',');
68 parser.skipWhiteSpace();
69 PString attribut(parser.getUntilKeyWithoutPatern(
";").eraseChar(
"\n"));
70 PVecString listToken(attribut.split(
" \n\t"));
71 PString attributName(listToken.back());
73 PString attributType(
"");
74 for(PVecString::iterator it(listToken.begin()); it != listToken.end(); ++it){
75 attributType += *it +
" ";
77 attributType = attributType.eraseFirstLastChar(
" \n\t");
89 if(!parser.isMatch(
"("))
return true;
91 while(!parser.isEndOfFile() && parser.isMatch(
")")){
97 if(parser.isMatch(
")")){
break;}
99 if(!parser.isMatch(
",")){
115 if(!parser.isMatch(
"=")){
116 value = parser.getStrComposedOf(
"0123456789xu");
132bool parseEnumConfig(std::vector<PClassConfig> & listClassConfig, PFileParser & parser, PString & currentComment){
133 if(!parser.isMatchToken(
"enum")){
return false;}
137 std::cout <<
"parseEnumConfig : find enum : '"<<enumName<<
"'" << std::endl;
141 parser.skipWhiteSpace();
142 if(!parser.isMatch(
"{")){
144 std::cerr <<
"\tExpect '{' after enum name '"<<enumName<<
"'" << std::endl;
147 bool searchingData(
true);
148 while(!parser.isEndOfFile() && searchingData && !parser.isMatch(
"}")){
157 listClassConfig.push_back(config);
168bool parsePClassConfig(std::vector<PClassConfig> & listClassConfig, PFileParser & parser, PString & currentComment, PVecString & listTemplate){
171 std::cout <<
"parsePClassConfig : find className : '"<<className<<
"'" << std::endl;
176 listTemplate.clear();
177 parser.skipWhiteSpace();
180 std::cerr <<
"parsePClassConfig : file '" << parser.getFileName() <<
"' line " << parser.getLine() << std::endl;
181 std::cerr <<
"\tmissing ')' : can't parse parents of the class '"<<config.
getName()<<
"'" << std::endl;
183 if(parser.isEndOfFile()){
184 std::cerr <<
"parsePClassConfig : file '" << parser.getFileName() <<
"' line " << parser.getLine() << std::endl;
185 std::cerr <<
"\tmissing '}'" << std::endl;
188 if(!parser.isMatch(
"{")){
190 std::cerr <<
"\tExpect '{' after class name '"<<className<<
"'" << std::endl;
194 bool searchingData(
true);
195 while(!parser.isEndOfFile() && searchingData && !parser.isMatch(
"}")){
204 listClassConfig.push_back(config);
214bool parserClassConfig(std::vector<PClassConfig> & listClassConfig, PVecPath & listInclude,
const PPath & fileName){
215 if(fileName ==
"")
return false;
217 parser.setWhiteSpace(
" \t\n");
218 parser.setSeparator(
"{};/*");
219 if(!parser.open(fileName))
return false;
220 PString currentComment(
"");
221 PVecString listTemplate;
222 while(!parser.isEndOfFile()){
223 if(parser.isMatch(
"#")){
224 if(parser.isMatch(
"include")){
225 listInclude.push_back(parser.getUntilKeyWithoutPatern(
"\n").eraseChar(
" \t\n"));
236 parser.skipWhiteSpace();
Describes a class attribute.
void setDefaultValue(const PString &defaultValue)
Sets the defaultValue of the PClassAttribute.
Class to describe a basic class.
void addAttribute(const PClassAttribute &attribute)
Adds an attribute to the class.
void setClassDocumentation(const PString &classDocumentation)
Sets the class documentation.
void setIsEnum(bool isEnum)
Set if the current PClassConfig is an enum.
const PString & getName() const
Returns the class name.
void setName(const PString &name)
Sets the class name.
void addParentClass(const PString &parentClass)
Add a parent class to the PClassConfig.
void setListTemplate(const PVecString &listTemplate)
Sets the list of template of the class.
PClassAttribute createClassAttribute(const PString &type, const PString &name, const PString &documentation)
Creates a PClassAttribute.
bool updateCurrentComment(PFileParser &parser, PString ¤tComment)
Fonction qui met à jour un commentaire.
bool parseEnumValue(PClassConfig &config, PFileParser &parser, PString ¤tComment)
Parse enum attribute value.
bool parseEnumConfig(std::vector< PClassConfig > &listClassConfig, PFileParser &parser, PString ¤tComment)
Parse an enum definition.
bool parseClassConfigAttribut(PClassConfig &config, PFileParser &parser, PString ¤tComment)
Parse a PClassConfig.
bool parsePClassConfig(std::vector< PClassConfig > &listClassConfig, PFileParser &parser, PString ¤tComment, PVecString &listTemplate)
Parse a PClassConfig.
bool parserClassConfig(std::vector< PClassConfig > &listClassConfig, PVecPath &listInclude, const PPath &fileName)
Parser list class config.
bool updateCurrentTemplate(PFileParser &parser, PVecString ¤tTemplate)
Update a template definition.
bool parseParentOfClassConfig(PClassConfig &config, PFileParser &parser)
Parse the parents of the PClassConfig.
PString getClassName(PFileParser &parser)
Get class name from parser.
void errorUnexpectedToken(const PFileParser &parser, const PString &token)
Affiche une erreur de token non attendu.