@@ -362,6 +362,16 @@ void ProjMgrYamlParser::ParseString(const YAML::Node& parent, const string& key,
362362 }
363363}
364364
365+ void ProjMgrYamlParser::ParseNumber (const YAML::Node& parent, const string& file, const string& key, string& value) {
366+ if (parent[key].IsDefined ()) {
367+ value = parent[key].as <string>();
368+ if (!regex_match (value, regex (" ^(0x[0-9a-fA-F]+)$|^([0-9]*)$" ))) {
369+ YAML::Mark mark = parent[key].Mark ();
370+ ProjMgrLogger::Get ().Warn (" number must be integer or hexadecimal prefixed by 0x" , " " , file, mark.line + 1 , mark.column + 1 );
371+ }
372+ }
373+ }
374+
365375void ProjMgrYamlParser::ParseInt (const YAML::Node& parent, const string& key, int & value) {
366376 if (parent[key].IsDefined ()) {
367377 value = parent[key].as <int >();
@@ -920,9 +930,9 @@ bool ProjMgrYamlParser::ParseTargetType(const YAML::Node& parent, const string&
920930 MemoryItem memoryItem;
921931 ParseString (memoryEntry, YAML_NAME, memoryItem.name );
922932 ParseString (memoryEntry, YAML_ACCESS, memoryItem.access );
923- ParseString (memoryEntry, YAML_START, memoryItem.start );
924- ParseString (memoryEntry, YAML_SIZE, memoryItem.size );
925933 ParseString (memoryEntry, YAML_ALGORITHM, memoryItem.algorithm );
934+ ParseNumber (memoryEntry, file, YAML_START, memoryItem.start );
935+ ParseNumber (memoryEntry, file, YAML_SIZE, memoryItem.size );
926936 targetType.memory .push_back (memoryItem);
927937 }
928938 }
0 commit comments