- Localized Parser.
This commit is contained in:
Paul Beckingham
2014-07-04 18:03:25 -04:00
parent 70156d3c3d
commit 378799e27d
6 changed files with 58 additions and 48 deletions

View File

@@ -53,8 +53,6 @@ static int safetyValveDefault = 10;
Parser::Parser () Parser::Parser ()
{ {
_tree = new Tree ("root"); _tree = new Tree ("root");
if (! _tree)
throw std::string ("Failed to allocate memory for parse tree.");
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -117,10 +115,7 @@ void Parser::initialize (int argc, const char** argv)
void Parser::clear () void Parser::clear ()
{ {
delete _tree; delete _tree;
_tree = new Tree ("root"); _tree = new Tree ("root");
if (! _tree)
throw std::string ("Failed to allocate memory for parse tree.");
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -376,7 +371,7 @@ void Parser::resolveAliases ()
while (something && --safety_valve > 0); while (something && --safety_valve > 0);
if (safety_valve <= 0) if (safety_valve <= 0)
context.debug (format ("Nested alias limit of {1} reached.", safetyValveDefault)); context.debug (format (STRING_PARSER_ALIAS_NEST, safetyValveDefault));
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@@ -482,7 +477,7 @@ void Parser::getOverrides (
else else
home = "."; home = ".";
context.header (format (STRING_A3_ALTERNATE_RC, rc._data)); context.header (format (STRING_PARSER_ALTERNATE_RC, rc._data));
// Keep looping, because if there are multiple rc:file arguments, we // Keep looping, because if there are multiple rc:file arguments, we
// want the last one to dominate. // want the last one to dominate.
@@ -505,7 +500,7 @@ void Parser::getDataLocation (Path& data)
(*i)->attribute ("name") == "data.location") (*i)->attribute ("name") == "data.location")
{ {
data = Directory ((*i)->attribute ("value")); data = Directory ((*i)->attribute ("value"));
context.header (format (STRING_A3_ALTERNATE_DATA, (std::string) data)); context.header (format (STRING_PARSER_ALTERNATE_DATA, (std::string) data));
} }
// Keep looping, because if there are multiple overrides, we want the last // Keep looping, because if there are multiple overrides, we want the last
@@ -526,7 +521,7 @@ void Parser::applyOverrides ()
std::string name = (*i)->attribute ("name"); std::string name = (*i)->attribute ("name");
std::string value = (*i)->attribute ("value"); std::string value = (*i)->attribute ("value");
context.config.set (name, value); context.config.set (name, value);
context.footnote (format (STRING_A3_OVERRIDE_RC, name, value)); context.footnote (format (STRING_PARSER_OVERRIDE_RC, name, value));
} }
} }
} }
@@ -1147,7 +1142,7 @@ void Parser::findAttributeModifier ()
#endif #endif
} }
else else
throw format (STRING_A3_UNKNOWN_ATTMOD, modifier); throw format (STRING_PARSER_UNKNOWN_ATTMOD, modifier);
std::map <std::string, Column*>::const_iterator col; std::map <std::string, Column*>::const_iterator col;
col = context.columns.find (canonical); col = context.columns.find (canonical);
@@ -1229,7 +1224,7 @@ void Parser::findIdSequence ()
n_max.depleted ()) n_max.depleted ())
{ {
if (id_min > id_max) if (id_min > id_max)
throw std::string (STRING_A3_RANGE_INVERTED); throw std::string (STRING_PARSER_RANGE_INVERTED);
ranges.push_back (std::pair <int, int> (id_min, id_max)); ranges.push_back (std::pair <int, int> (id_min, id_max));
} }
@@ -1240,7 +1235,7 @@ void Parser::findIdSequence ()
} }
} }
else else
throw std::string (STRING_A3_MALFORMED_ID); throw std::string (STRING_PARSER_MALFORMED_ID);
} }
if (not_an_id) if (not_an_id)
@@ -1347,7 +1342,7 @@ void Parser::findUUIDList ()
{ {
if (!n.getUUID (uuid) && if (!n.getUUID (uuid) &&
!n.getPartialUUID (uuid)) !n.getPartialUUID (uuid))
throw std::string (STRING_A3_UUID_AFTER_COMMA); throw std::string (STRING_PARSER_UUID_AFTER_COMMA);
sequence.push_back (uuid); sequence.push_back (uuid);
} }

View File

@@ -101,20 +101,23 @@
#define STRING_LOCALIZATION_DESC "English localization" #define STRING_LOCALIZATION_DESC "English localization"
#define STRING_LOCALIZATION_AUTHOR "Translated into English by A. Person." #define STRING_LOCALIZATION_AUTHOR "Translated into English by A. Person."
// Parser
#define STRING_PARSER_ALIAS_NEST "Nested alias limit of {1} reached."
#define STRING_PARSER_OVERRIDE_RC "Configuration override rc.{1}:{2}"
#define STRING_PARSER_UNKNOWN_ATTMOD "Error: unrecognized attribute modifier '{1}'."
#define STRING_PARSER_RANGE_INVERTED "Inverted range 'high-low' instead of 'low-high'"
#define STRING_PARSER_MALFORMED_ID "Malformed ID."
#define STRING_PARSER_UUID_AFTER_COMMA "Unrecognized UUID after comma."
#define STRING_PARSER_ALTERNATE_RC "Using alternate .taskrc file {1}"
#define STRING_PARSER_ALTERNATE_DATA "Using alternate data.location {1}"
// A3 // A3
#define STRING_A3_ALTERNATE_RC "Using alternate .taskrc file {1}"
#define STRING_A3_ALTERNATE_DATA "Using alternate data.location {1}"
#define STRING_A3_OVERRIDE_RC "Configuration override rc.{1}:{2}"
#define STRING_A3_OVERRIDE_PROBLEM "Problem with override: {1}" #define STRING_A3_OVERRIDE_PROBLEM "Problem with override: {1}"
#define STRING_A3_UNKNOWN_ATTMOD "Error: unrecognized attribute modifier '{1}'."
#define STRING_A3_MISMATCHED_PARENS "Mismatched parentheses in expression" #define STRING_A3_MISMATCHED_PARENS "Mismatched parentheses in expression"
#define STRING_A3_PATTERN_GARBAGE "Unrecognized character(s) at end of pattern." #define STRING_A3_PATTERN_GARBAGE "Unrecognized character(s) at end of pattern."
#define STRING_A3_MALFORMED_PATTERN "Malformed pattern." #define STRING_A3_MALFORMED_PATTERN "Malformed pattern."
#define STRING_A3_MALFORMED_ID "Malformed ID."
#define STRING_A3_MALFORMED_UUID "Malformed UUID." #define STRING_A3_MALFORMED_UUID "Malformed UUID."
#define STRING_A3_ID_AFTER_HYPHEN "Unrecognized ID after hyphen." #define STRING_A3_ID_AFTER_HYPHEN "Unrecognized ID after hyphen."
#define STRING_A3_RANGE_INVERTED "Inverted range 'high-low' instead of 'low-high'"
#define STRING_A3_UUID_AFTER_COMMA "Unrecognized UUID after comma."
#define STRING_A3_ZERO_ID "'{1}' is not a valid ID." #define STRING_A3_ZERO_ID "'{1}' is not a valid ID."
// Color // Color

View File

@@ -101,21 +101,24 @@
#define STRING_LOCALIZATION_DESC "- localización española" #define STRING_LOCALIZATION_DESC "- localización española"
#define STRING_LOCALIZATION_AUTHOR "Traducido al español por Fidel Mato." #define STRING_LOCALIZATION_AUTHOR "Traducido al español por Fidel Mato."
// Parser
#define STRING_PARSER_ALIAS_NEST "Nested alias limit of {1} reached."
#define STRING_PARSER_OVERRIDE_RC "Sobrescritura de configuración rc.{1}:{2}"
#define STRING_PARSER_UNKNOWN_ATTMOD "Error: modificador de atributo no reconocido '{1}'."
#define STRING_PARSER_RANGE_INVERTED "Rango invertido 'alto-bajo' en vez de 'bajo-alto'"
#define STRING_PARSER_MALFORMED_ID "ID incorrecto."
#define STRING_PARSER_UUID_AFTER_COMMA "UUID no reconocido tras coma."
#define STRING_PARSER_ALTERNATE_RC "Usando el archivo .taskrc alternativo {1}"
#define STRING_PARSER_ALTERNATE_DATA "Usando data.location alternativa {1}"
// A3 // A3
#define STRING_A3_ALTERNATE_RC "Usando el archivo .taskrc alternativo {1}"
#define STRING_A3_ALTERNATE_DATA "Usando data.location alternativa {1}"
// Sobrescritura: de R.A.E. sobrescribir // Sobrescritura: de R.A.E. sobrescribir
#define STRING_A3_OVERRIDE_RC "Sobrescritura de configuración rc.{1}:{2}"
#define STRING_A3_OVERRIDE_PROBLEM "Problema con sobrescritura: {1}" #define STRING_A3_OVERRIDE_PROBLEM "Problema con sobrescritura: {1}"
#define STRING_A3_UNKNOWN_ATTMOD "Error: modificador de atributo no reconocido '{1}'."
#define STRING_A3_MISMATCHED_PARENS "Paréntesis desemparejados en expresión" #define STRING_A3_MISMATCHED_PARENS "Paréntesis desemparejados en expresión"
#define STRING_A3_PATTERN_GARBAGE "Carácter(es) no reconocido(s) al final del patrón." #define STRING_A3_PATTERN_GARBAGE "Carácter(es) no reconocido(s) al final del patrón."
#define STRING_A3_MALFORMED_PATTERN "Patrón incorrecto." #define STRING_A3_MALFORMED_PATTERN "Patrón incorrecto."
#define STRING_A3_MALFORMED_ID "ID incorrecto."
#define STRING_A3_MALFORMED_UUID "UUID incorrecto." #define STRING_A3_MALFORMED_UUID "UUID incorrecto."
#define STRING_A3_ID_AFTER_HYPHEN "ID no reconocido tras guión." #define STRING_A3_ID_AFTER_HYPHEN "ID no reconocido tras guión."
#define STRING_A3_RANGE_INVERTED "Rango invertido 'alto-bajo' en vez de 'bajo-alto'"
#define STRING_A3_UUID_AFTER_COMMA "UUID no reconocido tras coma."
#define STRING_A3_ZERO_ID "'{1}' no es un ID válido." #define STRING_A3_ZERO_ID "'{1}' no es un ID válido."
// Color // Color

View File

@@ -101,20 +101,23 @@
#define STRING_LOCALIZATION_DESC "Traduction française" #define STRING_LOCALIZATION_DESC "Traduction française"
#define STRING_LOCALIZATION_AUTHOR "Traduit en Français par Leowzukw." #define STRING_LOCALIZATION_AUTHOR "Traduit en Français par Leowzukw."
// Parser
#define STRING_PARSER_ALIAS_NEST "Nested alias limit of {1} reached."
#define STRING_PARSER_OVERRIDE_RC "Configuration écrasée : rc.{1}:{2}"
#define STRING_PARSER_UNKNOWN_ATTMOD "Erreur : attribut de modification non reconnu '{1}'."
#define STRING_PARSER_RANGE_INVERTED "Inverted range 'high-low' instead of 'low-high'"
#define STRING_PARSER_MALFORMED_ID "ID mal formé."
#define STRING_PARSER_UUID_AFTER_COMMA "UUID non reconnu après la virgule."
#define STRING_PARSER_ALTERNATE_RC "Utilise un fichier .taskrc alternatif : {1}"
#define STRING_PARSER_ALTERNATE_DATA "Utilise une data.location alternative : {1}"
// A3 // A3
#define STRING_A3_ALTERNATE_RC "Utilise un fichier .taskrc alternatif : {1}"
#define STRING_A3_ALTERNATE_DATA "Utilise une data.location alternative : {1}"
#define STRING_A3_OVERRIDE_RC "Configuration écrasée : rc.{1}:{2}"
#define STRING_A3_OVERRIDE_PROBLEM "Problème avec l'écrasement de {1}" #define STRING_A3_OVERRIDE_PROBLEM "Problème avec l'écrasement de {1}"
#define STRING_A3_UNKNOWN_ATTMOD "Erreur : attribut de modification non reconnu '{1}'."
#define STRING_A3_MISMATCHED_PARENS "Parenthèses incohérentes dans l'expression" #define STRING_A3_MISMATCHED_PARENS "Parenthèses incohérentes dans l'expression"
#define STRING_A3_PATTERN_GARBAGE "Caractère(s) non reconnu(s) à la fin du motif." #define STRING_A3_PATTERN_GARBAGE "Caractère(s) non reconnu(s) à la fin du motif."
#define STRING_A3_MALFORMED_PATTERN "Motif mal formé." #define STRING_A3_MALFORMED_PATTERN "Motif mal formé."
#define STRING_A3_MALFORMED_ID "ID mal formé."
#define STRING_A3_MALFORMED_UUID "UUID mal formé." #define STRING_A3_MALFORMED_UUID "UUID mal formé."
#define STRING_A3_ID_AFTER_HYPHEN "ID non reconnu après \"-\"" #define STRING_A3_ID_AFTER_HYPHEN "ID non reconnu après \"-\""
#define STRING_A3_RANGE_INVERTED "Inverted range 'high-low' instead of 'low-high'"
#define STRING_A3_UUID_AFTER_COMMA "UUID non reconnu après la virgule."
#define STRING_A3_ZERO_ID "'{1}' n'est pas un ID valide." #define STRING_A3_ZERO_ID "'{1}' n'est pas un ID valide."
// Color // Color

View File

@@ -102,20 +102,23 @@
#define STRING_LOCALIZATION_DESC "Traduzione in Italiano" #define STRING_LOCALIZATION_DESC "Traduzione in Italiano"
#define STRING_LOCALIZATION_AUTHOR "Tradotto in Italiano da Tullio Facchinetti." #define STRING_LOCALIZATION_AUTHOR "Tradotto in Italiano da Tullio Facchinetti."
// Parser
#define STRING_PARSER_ALIAS_NEST "Nested alias limit of {1} reached."
#define STRING_PARSER_OVERRIDE_RC "Modifica configurazione rc.{1}:{2}"
#define STRING_PARSER_UNKNOWN_ATTMOD "Errore: modificatore di attributo non riconosciuto '{1}'."
#define STRING_PARSER_RANGE_INVERTED "Intervallo invertito 'alto-basso' invece di 'basso-alto'"
#define STRING_PARSER_MALFORMED_ID "ID malformato."
#define STRING_PARSER_UUID_AFTER_COMMA "UUID non riconosciuto dopo la virgola."
#define STRING_PARSER_ALTERNATE_RC "Uso del file .taskrc alternativo {1}"
#define STRING_PARSER_ALTERNATE_DATA "Uso di data.location alternativa {1}"
// A3 // A3
#define STRING_A3_ALTERNATE_RC "Uso del file .taskrc alternativo {1}"
#define STRING_A3_ALTERNATE_DATA "Uso di data.location alternativa {1}"
#define STRING_A3_OVERRIDE_RC "Modifica configurazione rc.{1}:{2}"
#define STRING_A3_OVERRIDE_PROBLEM "Problema di modifica: {1}" #define STRING_A3_OVERRIDE_PROBLEM "Problema di modifica: {1}"
#define STRING_A3_UNKNOWN_ATTMOD "Errore: modificatore di attributo non riconosciuto '{1}'."
#define STRING_A3_MISMATCHED_PARENS "Mancata corrispondenza nell'uso delle parentesi nell'espressione" #define STRING_A3_MISMATCHED_PARENS "Mancata corrispondenza nell'uso delle parentesi nell'espressione"
#define STRING_A3_PATTERN_GARBAGE "Carattere(i) non riconosciuto(i) alla fine del pattern." #define STRING_A3_PATTERN_GARBAGE "Carattere(i) non riconosciuto(i) alla fine del pattern."
#define STRING_A3_MALFORMED_PATTERN "Pattern malformato." #define STRING_A3_MALFORMED_PATTERN "Pattern malformato."
#define STRING_A3_MALFORMED_ID "ID malformato."
#define STRING_A3_MALFORMED_UUID "UUID malformato." #define STRING_A3_MALFORMED_UUID "UUID malformato."
#define STRING_A3_ID_AFTER_HYPHEN "ID non riconosciuto dopo il trattino." #define STRING_A3_ID_AFTER_HYPHEN "ID non riconosciuto dopo il trattino."
#define STRING_A3_RANGE_INVERTED "Intervallo invertito 'alto-basso' invece di 'basso-alto'"
#define STRING_A3_UUID_AFTER_COMMA "UUID non riconosciuto dopo la virgola."
#define STRING_A3_ZERO_ID "'{1}' is not a valid ID." #define STRING_A3_ZERO_ID "'{1}' is not a valid ID."
// Color // Color

View File

@@ -101,20 +101,23 @@
#define STRING_LOCALIZATION_DESC "Tradução em Português" #define STRING_LOCALIZATION_DESC "Tradução em Português"
#define STRING_LOCALIZATION_AUTHOR "Traduzido para Português por Renato Alves." #define STRING_LOCALIZATION_AUTHOR "Traduzido para Português por Renato Alves."
// Parser
#define STRING_PARSER_ALIAS_NEST "Nested alias limit of {1} reached."
#define STRING_PARSER_OVERRIDE_RC "Alteração de configuração rc.{1}:{2}"
#define STRING_PARSER_UNKNOWN_ATTMOD "Erro: modificador de atributo não reconhecido '{1}'."
#define STRING_PARSER_RANGE_INVERTED "Intervalo invertido 'alta-baixa' em vez de 'baixa-alta'"
#define STRING_PARSER_MALFORMED_ID "ID malformado."
#define STRING_PARSER_UUID_AFTER_COMMA "UUID não reconhecido após a vírgula."
#define STRING_PARSER_ALTERNATE_RC "Usando o ficheiro .taskrc alternativo {1}"
#define STRING_PARSER_ALTERNATE_DATA "Usando data.location alternativa {1}"
// A3 // A3
#define STRING_A3_ALTERNATE_RC "Usando o ficheiro .taskrc alternativo {1}"
#define STRING_A3_ALTERNATE_DATA "Usando data.location alternativa {1}"
#define STRING_A3_OVERRIDE_RC "Alteração de configuração rc.{1}:{2}"
#define STRING_A3_OVERRIDE_PROBLEM "Problema com a alteração: {1}" #define STRING_A3_OVERRIDE_PROBLEM "Problema com a alteração: {1}"
#define STRING_A3_UNKNOWN_ATTMOD "Erro: modificador de atributo não reconhecido '{1}'."
#define STRING_A3_MISMATCHED_PARENS "Erro de não correspondência de parentesis na expressão" #define STRING_A3_MISMATCHED_PARENS "Erro de não correspondência de parentesis na expressão"
#define STRING_A3_PATTERN_GARBAGE "Caracter(es) não reconhecidos no fim da expressão." #define STRING_A3_PATTERN_GARBAGE "Caracter(es) não reconhecidos no fim da expressão."
#define STRING_A3_MALFORMED_PATTERN "Expressão malformada." #define STRING_A3_MALFORMED_PATTERN "Expressão malformada."
#define STRING_A3_MALFORMED_ID "ID malformado."
#define STRING_A3_MALFORMED_UUID "UUID malformado." #define STRING_A3_MALFORMED_UUID "UUID malformado."
#define STRING_A3_ID_AFTER_HYPHEN "ID não reconhecido após o hífen." #define STRING_A3_ID_AFTER_HYPHEN "ID não reconhecido após o hífen."
#define STRING_A3_RANGE_INVERTED "Intervalo invertido 'alta-baixa' em vez de 'baixa-alta'"
#define STRING_A3_UUID_AFTER_COMMA "UUID não reconhecido após a vírgula."
#define STRING_A3_ZERO_ID "'{1}' não é um ID válido." #define STRING_A3_ZERO_ID "'{1}' não é um ID válido."
// Color // Color