Ejemplo n.º 1
0
void gen_strings_class(const std::string& inputFn)
{
  cfg::CfgFile cfg;
  cfg.load(inputFn);

  std::cout
    << "// Don't modify, generated file from " << inputFn << "\n"
    << "\n";

  std::string fnUpper = base::string_to_upper(base::get_file_title(inputFn));

  std::cout
    << "#ifndef GENERATED_" << fnUpper << "_H_INCLUDED\n"
    << "#define GENERATED_" << fnUpper << "_H_INCLUDED\n"
    << "#pragma once\n"
    << "\n"
    << "namespace app {\n"
    << "namespace gen {\n"
    << "\n"
    << "  template<typename T>\n"
    << "  class Strings {\n"
    << "  public:\n";

  std::vector<std::string> sections;
  std::vector<std::string> keys;
  cfg.getAllSections(sections);
  for (const auto& section : sections) {
    keys.clear();
    cfg.getAllKeys(section.c_str(), keys);

    std::string textId = section;
    textId.push_back('.');
    for (auto key : keys) {
      textId.append(key);

      std::cout << "    const std::string& " << to_cpp(textId) << "() const { return static_cast<T*>(this)->translate(\"" << textId << "\"); }\n";

      textId.erase(section.size()+1);
    }
  }

  std::cout
    << "  };\n"
    << "\n"
    << "} // namespace gen\n"
    << "} // namespace app\n"
    << "\n"
    << "#endif\n";
}
Ejemplo n.º 2
0
			T to_cpp(lua_State* L, by_value<T>, int index)
			{
				return to_cpp(L, by_const_reference<T>(), index);
			}
Ejemplo n.º 3
0
void RegExpTest::word_segmentation_test()	{
	
	std::vector<std::string> tokens = {	
			"Other", 
			"CR", 
			"LF", 
			"Newline", 
			"Extend", 
			"Format", 
			"Katakana", 
			"ALetter", 
			"MidLetter", 
			"MidNum", 
			"MidNumLet", 
			"Numeric", 
			"ExtendNumLet"
		};		

// begin regular exp
	std::string Other_EF 		= "(Other.(Extend|Format)*)"; 
	std::string ALetter_EF 		= "(ALetter.(Extend|Format)*)"; 
	std::string Numeric_EF 		= "(Numeric.(Extend|Format)*)";
	std::string Katakana_EF  	= "(Katakana.(Extend|Format)*)";
	std::string ExtendNumLet_EF = "(ExtendNumLet.(Extend|Format)*)";
	std::string MidLetter_EF	= "(MidLetter.(Extend|Format)*)";
	std::string MidNumLet_EF	= "(MidNumLet.(Extend|Format)*)";
	std::string MidNum_EF 		= "(MidNum.(Extend|Format)*)";
	std::string MidLetter_MidNumLet_EF = "((MidLetter|MidNumLet).(Extend|Format)*)";
	std::string MidNum_MidNumLet_EF = "((MidNum|MidNumLet).(Extend|Format)*)";
	
//	std::string ALetter			= 	"(" + ALetter_EF + "+|(" + ALetter_EF + "+." + MidLetter_MidNumLet_EF + "." + ALetter_EF + "+))";
	std::string ALetter			= 	"((" + ALetter_EF + "|(" + ALetter_EF + "." + MidLetter_MidNumLet_EF + "." + ALetter_EF + "))+)";
	std::string Numeric			= 	"((" + Numeric_EF + "|(" + Numeric_EF + "+." + MidNum_MidNumLet_EF    + "." + Numeric_EF + "+))+)";
//	std::string Numeric			= 	"(" + Numeric_EF + "+|(" + Numeric_EF + "+." + MidNum_MidNumLet_EF + "." + Numeric_EF + "+))";

	std::string ALetter_Numeric =   	"((" + ALetter + "|" + Numeric + ")+)";

	//std::string Katakana = 			"((" + Katakana_EF + "+|" + ExtendNumLet_EF + "*)*)";
	//std::string Katakana = 				"(" + Katakana_EF + "+)";
	std::string Katakana_ExtendNumLet = "((" + Katakana_EF + "+|" + Katakana_EF + "+." + ExtendNumLet_EF + "+|" + ExtendNumLet_EF + "+." + Katakana_EF + "+)+)";
	std::string ALetter_Numeric_ExtendNumLet = "((" + ALetter_Numeric + "+|" + ALetter_Numeric + "+." + ExtendNumLet_EF + "+|" + ExtendNumLet_EF + "+." + ALetter_Numeric + "+)+)";

	std::string ExtendNumLet = "(" + ExtendNumLet_EF + "+)";

	std::string ALetter_Numeric_Katakana_1 =   "(" + ALetter_Numeric + "+." + ExtendNumLet_EF + "+." + Katakana_ExtendNumLet + "+)";
	std::string ALetter_Numeric_Katakana_2 =   "(" + Katakana_ExtendNumLet + "+." + ExtendNumLet_EF + "+." + ALetter_Numeric + "+)";

	std::stringstream ss;
//	ss << "("+ Other_EF + "|CR|LF|Newline|Extend|Format|Katakana|ALetter|" + MidLetter_EF + "|MidNum|" + MidNumLet_EF + "|Numeric|ExtendNumLet)";
	ss << "((Other|Extend|Format|Katakana|ALetter|MidLetter|MidNum|MidNumLet|Numeric|ExtendNumLet).(Extend|Format)*)";
	ss << "|(CR|LF|Newline)";
	ss << "|(CR.LF)";
	ss << "|((Extend|Format)*)";
	ss << "|" << ALetter_Numeric;
	ss << "|" << ALetter_Numeric_ExtendNumLet ;
	ss << "|" << Katakana_ExtendNumLet;
	ss << "|" << ALetter_Numeric_Katakana_1;
	ss << "|" << ALetter_Numeric_Katakana_2;
	ss << "|" << ExtendNumLet;
	ss << "|" << ALetter;
	
// end regular exp
	
	
	
	RegExpWithTokens<char> reg_exp(tokens, 'a');
	reg_exp.evaluate(ss.str());
	to_str(std::cout, reg_exp.dfa(), tokens, 'a');
	to_cpp(std::cout, reg_exp.dfa(), "word_states");

	std::string s0 = {};
	std::string s1 = {(char)PV::ALetter};
	std::string s2 = {(char)PV::ALetter, (char)PV::ALetter};
	std::string s3 = {(char)PV::ALetter, (char)PV::ALetter, (char)PV::ALetter};
	std::string s4 = {(char)PV::ALetter, (char)PV::Extend, (char)PV::ALetter, (char)PV::Numeric};
	std::string s5 = {(char)PV::Katakana};
	std::string s6 = {(char)PV::Katakana, (char)PV::Katakana};
	std::string s7 = {(char)PV::Katakana, (char)PV::Katakana, (char)PV::Katakana};
	
	std::string s8 = {(char)PV::Katakana, (char)PV::ExtendNumLet};
	std::string s9 = {(char)PV::Katakana, (char)PV::ExtendNumLet, (char)PV::ExtendNumLet, (char)PV::Katakana};
	std::string s10 = {(char)PV::Katakana, (char)PV::ExtendNumLet, (char)PV::Katakana, (char)PV::ExtendNumLet, (char)PV::Katakana};
	std::string s11 = {(char)PV::ExtendNumLet, (char)PV::Katakana, (char)PV::ExtendNumLet, (char)PV::Katakana};

	std::string s12 = {(char)PV::ALetter, (char)PV::Numeric, (char)PV::ALetter};
	std::string s13 = {(char)PV::ExtendNumLet};
	std::string s14 = {(char)PV::ExtendNumLet, (char)PV::ExtendNumLet};

	std::string s15 = {(char)PV::Katakana, (char)PV::ALetter};
	std::string s16 = {(char)PV::ALetter, (char)PV::Katakana};
	std::string s17 = {(char)PV::Katakana, (char)PV::Numeric};
	std::string s18 = {(char)PV::Numeric, (char)PV::Katakana};
	std::string s19 = {(char)PV::Other, (char)PV::Extend};
	std::string s20 = {(char)PV::MidNumLet, (char)PV::Format};
	std::string s21 = {(char)PV::ALetter, (char)PV::MidLetter, (char)PV::ALetter};

	
//	assert (check_aux(reg_exp.dfa(), s0, 'a')==false);
	assert (check_aux(reg_exp.dfa(), s1, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s2, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s3, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s4, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s5, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s6, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s7, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s8, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s9, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s10, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s11, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s12, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s13, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s14, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s15, 'a')==false);
	assert (check_aux(reg_exp.dfa(), s16, 'a')==false);
	assert (check_aux(reg_exp.dfa(), s17, 'a')==false);
	assert (check_aux(reg_exp.dfa(), s18, 'a')==false);
	assert (check_aux(reg_exp.dfa(), s19, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s20, 'a')==true);
	assert (check_aux(reg_exp.dfa(), s21, 'a')==true);
	
/*	check_aux(reg_exp.dfa(), , true};
	check_aux(reg_exp.dfa(), , true},
	check_aux(reg_exp.dfa(), std::string({(char)PV::ALetter, (char)PV::Extend, (char)PV::ALetter, (char)PV::Numeric}, true}
	*/	
	
//	std::string target = {(char)PV::ALetter, (char)PV::Extend, };
	std::string target = {(char)PV::ALetter, (char)PV::Extend, (char)PV::ALetter, (char)PV::Numeric};
//	std::string target = {(char)PV::ALetter, (char)PV::Numeric};
//	CHECK(reg_exp.dfa(), target, true);
	std::cout << "end test5 " << std::endl;
		
}