本文整理汇总了C++中Errors::push方法的典型用法代码示例。如果您正苦于以下问题:C++ Errors::push方法的具体用法?C++ Errors::push怎么用?C++ Errors::push使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Errors
的用法示例。
在下文中一共展示了Errors::push方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: readAndPreProcess
// Pre-Processamento:
// Remove os comentarios e linhas em branco
// E coloca o codigo numa estrutura do tipo CodeLines
// Tambem verifica os labels e equs e ifs
void readAndPreProcess (const char* fileName) {
ifstream infile(fileName);
string line;
int textMemAddr = textStartAddress;
int dataMemAddr = 0;
int BSSMemAddr = 0;
stringstream tempSS;
CodeSection codeSection = NONE;
// Le linha a linha
for (int lineCount = 1; getline(infile, line); ++lineCount) {
// Troca virgulas por espaco
strReplace(line, ",", " ");
// Ignora linhas em branco
if (line.empty()) continue;
// Pega palavra a palavra de acordo com os espacos
istringstream iss(line);
string tempStr;
while (iss >> tempStr) {
if ("SECTION" == tempStr) {
string tempStr2;
iss >> tempStr2;
if ("TEXT" == tempStr2)
codeSection = TEXT;
else if ("DATA" == tempStr2)
codeSection = DATA;
codeLines[lineCount].push_back(tempStr);
codeLines[lineCount].push_back(tempStr2);
continue;
}
// Ignora comentarios
if (";" == tempStr.substr(0,1)) break;
// Desconsidera o caso (maiusculas/minusculas)
transform(tempStr.begin(), tempStr.end(), tempStr.begin(), ::toupper);
// Ve se eh um label / define
if (":" == tempStr.substr(tempStr.length() - 1, 1)) {
// Ve se ainda restam tokens na linha
if (iss.rdbuf()->in_avail() != 0) {
// Remove o ':'
tempStr = tempStr.substr(0, tempStr.length() - 1);
string tempStr2;
iss >> tempStr2;
// Ve se o proximo token eh EQU
if ("EQU" == tempStr2) {
string tempStr3;
iss >> tempStr3;
// Se define já existe
if (defines.find(tempStr3) != defines.end()){
tempSS << lineCount;
errors.push("ERRO NA LINHA " + tempSS.str() + ": EQU ja declarado.");
tempSS.str("");
} else {
// Coloca o valor do EQU na tabela de defines
defines[tempStr] = tempStr3;
}
// Se nao eh so um label
// Com algo a mais na mesma linha
} else {
if ( (labels.find(tempStr) != labels.end()) ||
(dataLabels.find(tempStr) != dataLabels.end()) ){
tempSS << lineCount;
errors.push("ERRO NA LINHA " + tempSS.str() + ": Label ja declarado.");
tempSS.str("");
} else {
// Adiciona na tabela de labels
if(codeSection == TEXT){
labels[tempStr] = textMemAddr;
} else if (codeSection == DATA) {
dataLabels[tempStr] = dataMemAddr;
dataMemAddr += 4;
}
}
// Adiciona endereco de memoria
//.........这里部分代码省略.........