Kaydet (Commit) 8aed53c1 authored tarafından jan Iversen's avatar jan Iversen

genLang .src conversion, first version.

LO uses the .src quite differently, so a new implementation
was made.

The unused old functions are hanging in a #if 0, and will
be removed later.

Change-Id: Ic466a1b97f9f65c9f658612bd2aa325396e929c3
üst 3db082a7
......@@ -28,26 +28,29 @@ extern int srclex(void);
class convert_src : public convert_gen
{
public:
bool mbExpectValue;
// bool mbExpectValue;
convert_src(l10nMem& crMemory);
~convert_src() override {};
void setValue (char *syyText, char *sbuildValue);
void setLang (char *syyText, bool bEnUs);
void setId (char *syyText, bool bIde);
void setText (char *syyText);
void setName (char *syyText);
void setCmd (char *syyText);
void setMacro (char *syyText);
void setList (char *syyText);
void setListItem (char const *syyText, bool bIsStart);
void setNL (char *syyText, bool bMacro);
void startBlock (char *syyText);
void stopBlock (char *syyText);
void setValue(string& syyText);
bool setLang(string& syyText);
void setName(string& syyText);
void setCmd(string& syyText);
void startBlock();
void stopBlock();
// void setId (char *syyText, bool bIde);
// void setText (char *syyText);
// void setMacro (char *syyText);
// void setList (char *syyText);
// void setListItem (char const *syyText, bool bIsStart);
// void setNL (char *syyText, bool bMacro);
private:
vector<string> mcStack;
void doExecute() override;
#if 0
string msValue;
string msName;
string msTextName;
......@@ -62,9 +65,10 @@ class convert_src : public convert_gen
bool mbInListItem;
int miListCount;
int miMacroLevel;
void doExecute() override;
static void trim(string& sText);
void buildKey(string& sKey);
void insertLanguagePart(string& sKey, string& sTextType);
#endif
};
#endif
......@@ -29,7 +29,9 @@ using namespace std;
convert_src::convert_src(l10nMem& crMemory)
: convert_gen(crMemory),
: convert_gen(crMemory)
#if 0
,
mbExpectValue(false),
mbEnUs(false),
mbExpectName(false),
......@@ -38,6 +40,7 @@ convert_src::convert_src(l10nMem& crMemory)
mbValuePresent(false),
mbInList(false),
mbInListItem(false)
#endif
{
}
......@@ -50,112 +53,116 @@ void convert_src::doExecute()
void convert_src::setValue(char *syyText, char *sbuildValue)
void convert_src::setValue(string& syyText)
{
copySource(syyText);
if (mbInList && !mbInListItem) {
setListItem("", true);
setListItem("", false);
int stackSize = mcStack.size();
string cleanValue = syyText.substr(1, syyText.size() - 1);
{
cout << "test value\n";
for (int i = 0; i < stackSize; i++)
cout << mcStack[i] << "\n";
}
msValue = sbuildValue;
if (mbInListItem)
msGroup = msValue;
mbValuePresent = true;
mbExpectValue = false;
string subid = (stackSize > 3) ? mcStack[2] : mcStack[0];
l10nMem::keyToLower(subid);
mcMemory.setSourceKey(miLineNo, msSourceFile, mcStack[1], cleanValue, "", subid, mcStack[stackSize-1], false);
mcStack.pop_back();
}
void convert_src::setLang(char *syyText, bool bEnUs)
bool convert_src::setLang(string& syyText)
{
string useText = copySource(syyText) + " is no en-US language";
if (syyText == "en-US")
return true;
else if (syyText != "x-comment")
l10nMem::showError(syyText + " non legal language");
return false;
}
mbEnUs = bEnUs;
if (!bEnUs && mbExpectValue)
l10nMem::showError(useText);
void convert_src::setName(string& syyText)
{
mcStack.push_back(syyText);
}
void convert_src::setId(char *syyText, bool bId)
void convert_src::setCmd(string& syyText)
{
copySource(syyText);
if (bId || !mcStack.back().size())
mbExpectName = mbAutoPush = true;
mcStack.push_back(syyText);
}
void convert_src::setText(char *syyText)
void convert_src::startBlock()
{
msTextName = copySource(syyText);
mbExpectValue = true;
mbEnUs = false;
trim(msTextName);
}
void convert_src::setName(char *syyText)
void convert_src::stopBlock()
{
string useText = copySource(syyText);
trim(useText);
if (mbExpectName) {
mbExpectName = false;
if (!mbAutoPush) {
if (msName.length())
msGroup = useText;
else
msName = useText;
}
else {
mbAutoPush = false;
if (mcStack.size())
mcStack.pop_back();
mcStack.push_back(useText);
}
}
// check for correct node/prop relations
if (mcStack.size())
mcStack.pop_back();
}
void convert_src::setCmd(char *syyText)
#if 0
void convert_src::setId(char *syyText, bool bId)
{
msCmd = copySource(syyText);
mbExpectName = true;
mbInList = false;
trim(msCmd);
l10nMem::keyToLower(msCmd);
copySource(syyText);
if (bId || !mcStack.back().size())
mbExpectName = mbAutoPush = true;
}
#endif
#if 0
void convert_src::setText(char *syyText)
{
msTextName = copySource(syyText);
mbExpectValue = true;
mbEnUs = false;
trim(msTextName);
}
#endif
#if 0
void convert_src::setMacro(char *syyText)
{
msCmd = copySource(syyText);
mbExpectName =
mbExpectMacro =
mbAutoPush = true;
miMacroLevel = mcStack.size();
msCmd = copySource(syyText);
mbExpectName =
mbExpectMacro =
mbAutoPush = true;
miMacroLevel = mcStack.size();
mcStack.push_back("");
trim(msCmd);
}
#endif
#if 0
void convert_src::setList(char *syyText)
{
msCmd = copySource(syyText);
msCmd = copySource(syyText);
miListCount = 0;
mbInList = true;
mbInList = true;
trim(msCmd);
l10nMem::keyToLower(msCmd);
}
#endif
#if 0
void convert_src::setNL(char *syyText, bool bMacro)
{
int nL;
......@@ -168,19 +175,19 @@ void convert_src::setNL(char *syyText, bool bMacro)
buildKey(sKey);
for (nL = -1;;) {
nL = msValue.find("\\\"", nL+1);
nL = msValue.find("\\\"", nL + 1);
if (nL == (int)string::npos)
break;
msValue.erase(nL,1);
msValue.erase(nL, 1);
}
for (nL = -1;;) {
nL = msValue.find("\\\\", nL+1);
nL = msValue.find("\\\\", nL + 1);
if (nL == (int)string::npos)
break;
msValue.erase(nL,1);
msValue.erase(nL, 1);
}
//FIX sKey += "." + msCmd + "." + msTextName;
//FIX sKey += "." + msCmd + "." + msTextName;
if (msValue.size() && msValue != "-") {
mcMemory.setSourceKey(miLineNo, msSourceFile, sKey, msValue, "", msCmd, msGroup, mbMergeMode);
if (mbMergeMode)
......@@ -192,43 +199,21 @@ void convert_src::setNL(char *syyText, bool bMacro)
if (!bMacro && mbExpectMacro) {
while ((int)mcStack.size() > miMacroLevel)
mcStack.pop_back();
mbEnUs =
mbExpectMacro = false;
mbEnUs =
mbExpectMacro = false;
}
mbValuePresent =
mbExpectName =
mbAutoPush = false;
mbExpectName =
mbAutoPush = false;
msValue.clear();
msTextName.clear();
}
#endif
void convert_src::startBlock(char *syyText)
{
copySource(syyText);
mcStack.push_back(msName);
}
void convert_src::stopBlock(char *syyText)
{
copySource(syyText);
// check for correct node/prop relations
if (mcStack.size())
mcStack.pop_back();
mbInList =
mbEnUs = false;
msName.clear();
}
#if 0
void convert_src::setListItem(char const *syyText, bool bIsStart)
{
copySource(syyText);
......@@ -266,9 +251,11 @@ void convert_src::setListItem(char const *syyText, bool bIsStart)
}
}
}
#endif
#if 0
void convert_src::trim(string& sText)
{
int nL;
......@@ -281,9 +268,11 @@ void convert_src::trim(string& sText)
if (nL != (int)sText.size())
sText.erase(nL);
}
#endif
#if 0
void convert_src::buildKey(string& sKey)
{
int nL;
......@@ -297,9 +286,11 @@ void convert_src::buildKey(string& sKey)
// FIX jan
sKey = mcStack[0];
}
#endif
#if 0
void convert_src::insertLanguagePart(string& sKey, string& sTextType)
{
string sLang, sText, sTagText;
......@@ -317,3 +308,4 @@ void convert_src::insertLanguagePart(string& sKey, string& sTextType)
writeSourceFile(sTagText);
}
}
#endif
......@@ -39,16 +39,13 @@ using namespace std;
%p 24000
%e 1200
%n 500
%x CMD
%x CMD ID LANG LANG2 LANG3 LANG4
PRE ^[ \t]*
SUF [ \t\r\n\\]
SUFT [ \t\r\n\[]
SPACE [ \t]*
IDENT ([(a-zA-Z0-9_][ a-zA-Z0-9_\-\+\*(,&]*[a-zA-Z0-9)_]|[a-zA-Z0-9_])
KEYID [a-zA-Z0-9_-]+
SUF [ \t\r\n\\]+
%%
f
"/*" {
......@@ -66,13 +63,80 @@ KEYID [a-zA-Z0-9_-]+
}
"//".* {
LOCptr->copySource(yytext);
}
"\"" {
"{" {
LOCptr->copySource(yytext);
LOCptr->startBlock();
}
"}"{SPACE}";"* {
LOCptr->copySource(yytext);
LOCptr->stopBlock();
}
[iI][dD][eE][nN][tT][iI][fF][iI][eE][rR] {
LOCptr->copySource(yytext);
BEGIN(ID);
}
<ID>{SPACE}[=]*{SPACE} {
LOCptr->copySource(yytext);
}
<ID>{IDENT} {
LOCptr->setName(LOCptr->copySource(yytext));
BEGIN(INITIAL);
}
[tT][eE][xX][tT] {
LOCptr->copySource(yytext);
BEGIN(LANG);
}
<LANG>{SPACE}"["{SPACE} {
LOCptr->copySource(yytext);
BEGIN(LANG2);
}
<LANG2>{IDENT} {
if (LOCptr->setLang(LOCptr->copySource(yytext))) {
BEGIN(LANG3);
}
else {
BEGIN(INITIAL);
}
}
<LANG3>{SPACE}"]"{SPACE}"="{SPACE} {
LOCptr->copySource(yytext);
BEGIN(LANG4);
}
<LANG4>"\"" {
char buildValue[8000];
int j, i;
......@@ -84,31 +148,65 @@ KEYID [a-zA-Z0-9_-]+
if (yytext[i] == '\\')
buildValue[++j] = yytext[++i] = yyinput();
--j;
// Look for termination or continuation
if (LOCptr->mbExpectValue)
for (; (yytext[++i] = yyinput()) != ';' && yytext[i] != '\"';) ;
else
break;
for (; (yytext[++i] = yyinput()) != ';' && yytext[i] != '\"';) ;
}
yytext[++i] =
buildValue[j+1] = '\0';
LOCptr->setValue(yytext, &buildValue[1]);
LOCptr->setValue(LOCptr->copySource(buildValue));
BEGIN(INITIAL);
}
"{" {
LOCptr->startBlock(yytext);
[mM][eE][nN][uU] |
[mM][eE][nN][uU][iI][tT][eE][mM] |
[sS][tT][rR][iI][nN][gG] {
LOCptr->setCmd(LOCptr->copySource(yytext));
BEGIN(CMD);
}
"}"{SPACE}";"* {
LOCptr->stopBlock(yytext);
<CMD>{IDENT} {
LOCptr->setName(LOCptr->copySource(yytext));
BEGIN(INITIAL);
}
<CMD>{SPACE} {
LOCptr->copySource(yytext);
}
<CMD>{SUF} {
LOCptr->copySource(yytext);
BEGIN(INITIAL);
}
. {
LOCptr->copySource(yytext);
// Just to please compiler.
if (false)
REJECT;
}
%%
#if 0
PRE ^[ \t]*
SUFT [ \t\r\n\[]
KEYID [a-zA-Z0-9_-]+
%%
{PRE}"<"{SUF} {
yyless(strlen(yytext)-1);
LOCptr->setListItem(yytext, true);
......@@ -135,18 +233,6 @@ KEYID [a-zA-Z0-9_-]+
"["{SPACE}en-US{SPACE}"]" {
LOCptr->setLang(yytext, true);
}
"["{SPACE}{KEYID}{SPACE}"]" {
LOCptr->setLang(yytext, false);
}
{PRE}[bB][iI][tT][mM][aA][pP]{SUF} |
{PRE}[bB][uU][tT][tT][oO][nN][iI][mM][aA][gG][eE]{SUF} |
{PRE}[cC][aA][nN][cC][eE][lL][bB][uU][tT][tT][oO][nN]{SUF} |
......@@ -168,9 +254,7 @@ KEYID [a-zA-Z0-9_-]+
{PRE}[iI][mM][aA][gG][eE][rR][aA][dD][iI][oO][bB][uU][tT][tT][oO][nN]{SUF} |
{PRE}[iI][nN][fF][oO][bB][oO][xX]{SUF} |
{PRE}[lL][iI][sS][tT][bB][oO][xX]{SUF} |
{PRE}[mM][eE][nN][uU]{SUF} |
{PRE}[mM][eE][nN][uU][bB][uU][tT][tT][oO][nN]{SUF} |
{PRE}[mM][eE][nN][uU][iI][tT][eE][mM]{SUF} |
{PRE}[mM][eE][sS][sS][bB][oO][xX]{SUF} |
{PRE}[mM][eE][tT][rR][iI][cC][fF][iI][eE][lL][dD]{SUF} |
{PRE}[mM][oO][dD][aA][lL][dD][iI][aA][lL][oO][gG]{SUF} |
......@@ -188,7 +272,6 @@ KEYID [a-zA-Z0-9_-]+
{PRE}[sS][fF][xX][sS][tT][yY][lL][eE][fF][aA][mM][iI][lL][iI][eS][sS]{SUF} |
{PRE}[sS][fF][xX][sS][tT][yY][lL][eE][fF][aA][mM][iI][lL][yY][iI][tT][eE][mM]{SUF} |
{PRE}[sS][pP][iI][nN][fF][iI][eE][lL][dD]{SUF} |
{PRE}[sS][tT][rR][iI][nN][gG]{SUF} |
{PRE}[sS][tT][rR][iI][nN][gG][aA][rR][rR][aA][yY]{SUF} |
{PRE}[tT][aA][bB][cC][oO][nN][tT][rR][oO][lL]{SUF} |
{PRE}[tT][aA][bB][dD][iI][aA][lL][oO][gG]{SUF} |
......@@ -200,24 +283,6 @@ KEYID [a-zA-Z0-9_-]+
{PRE}[wW][aA][rR][nN][iI][nN][gG][bB][oO][xX]{SUF} |
{PRE}[wW][iI][nN][dD][oO][wW]{SUF} |
{PRE}[wW][oO][rR][kK][wW][iI][nN][dD][oO][wW]{SUF} {
yyless(strlen(yytext)-1);
LOCptr->setCmd(yytext);
BEGIN(CMD);
}
<CMD>{IDENT} {
LOCptr->setName(yytext);
BEGIN(INITIAL);
}
<CMD>[ \t=]+ {
LOCptr->copySource(yytext);
}
<CMD>.|\n|\r {
yyless(0);
BEGIN(INITIAL);
}
......@@ -229,10 +294,6 @@ KEYID [a-zA-Z0-9_-]+
{PRE}[sS][tT][yY][lL][eE][fF][aA][mM][iI][lL][yY]{SUF} |
{PRE}[iI][dD][eE][nN][tT][iI][fF][iI][eE][rR]{SUF} {
yyless(strlen(yytext)-1);
LOCptr->setId(yytext, true);
}
......@@ -277,18 +338,7 @@ KEYID [a-zA-Z0-9_-]+
LOCptr->setName(yytext);
}
. {
LOCptr->copySource(yytext);
// Just to please compiler.
if (false)
REJECT;
}
%%
#endif
void src_dummyJustForCompiler()
......
#!/bin/bash
cd ${LODE_HOME}/dev/work
cd ${LODE_HOME}/dev/core
MYCMD='./workdir/LinkTarget/Executable/genlang.exe extract -s --target workdir/jan '
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment