Skip to content

Commit c48a7a6

Browse files
#TDP - 25 Add class Translator from C to C#
It intermediary class Method make syntax , RPN, translate from other class become protected Make multiple inheritance Translatro<-SyntaxAnalisator<-RPN<-translate..<-Translatro..
1 parent e7706bb commit c48a7a6

11 files changed

+66
-47
lines changed

MethodsDevelopmentTranslator.vcxproj

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@
140140
<ClCompile Include="SyntaxAnalisator.cpp" />
141141
<ClCompile Include="translate_csharp.cpp" />
142142
<ClCompile Include="Translator.cpp" />
143+
<ClCompile Include="TranslatorFromCToCSharp.cpp" />
143144
<ClCompile Include="Translator_LanguageC.cpp" />
144145
</ItemGroup>
145146
<ItemGroup>
@@ -149,6 +150,7 @@
149150
<ClInclude Include="SyntaxAnalisator.h" />
150151
<ClInclude Include="translate_csharp.h" />
151152
<ClInclude Include="Translator.h" />
153+
<ClInclude Include="TranslatorFromCToCSharp.h" />
152154
<ClInclude Include="Translator_LanguageC.h">
153155
<FileType>CppForm</FileType>
154156
</ClInclude>
@@ -160,13 +162,12 @@
160162
</ItemGroup>
161163
<ItemGroup>
162164
<Text Include="C.txt" />
163-
<Text Include="CodeCSharp.txt" />
164-
<Text Include="lexical.txt" />
165-
<Text Include="RPN.txt" />
166165
<Text Include="test.txt" />
166+
<Text Include="translator_file\lexical.txt" />
167+
<Text Include="translator_file\RPN.txt" />
167168
</ItemGroup>
168169
<ItemGroup>
169-
<None Include="CodeCSharp.cs" />
170+
<None Include="translator_file\CodeCSharp.cs" />
170171
</ItemGroup>
171172
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
172173
<ImportGroup Label="ExtensionTargets">

MethodsDevelopmentTranslator.vcxproj.filters

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
<ClCompile Include="translate_csharp.cpp">
3434
<Filter>Исходные файлы</Filter>
3535
</ClCompile>
36+
<ClCompile Include="TranslatorFromCToCSharp.cpp">
37+
<Filter>Исходные файлы</Filter>
38+
</ClCompile>
3639
</ItemGroup>
3740
<ItemGroup>
3841
<ClInclude Include="Translator_LanguageC.h">
@@ -56,6 +59,9 @@
5659
<ClInclude Include="translate_csharp.h">
5760
<Filter>Файлы заголовков</Filter>
5861
</ClInclude>
62+
<ClInclude Include="TranslatorFromCToCSharp.h">
63+
<Filter>Файлы заголовков</Filter>
64+
</ClInclude>
5965
</ItemGroup>
6066
<ItemGroup>
6167
<Text Include="C.txt">
@@ -64,18 +70,15 @@
6470
<Text Include="test.txt">
6571
<Filter>Файлы ресурсов</Filter>
6672
</Text>
67-
<Text Include="lexical.txt">
68-
<Filter>Файлы ресурсов</Filter>
69-
</Text>
70-
<Text Include="RPN.txt">
73+
<Text Include="translator_file\lexical.txt">
7174
<Filter>Файлы ресурсов</Filter>
7275
</Text>
73-
<Text Include="CodeCSharp.txt">
76+
<Text Include="translator_file\RPN.txt">
7477
<Filter>Файлы ресурсов</Filter>
7578
</Text>
7679
</ItemGroup>
7780
<ItemGroup>
78-
<None Include="CodeCSharp.cs">
81+
<None Include="translator_file\CodeCSharp.cs">
7982
<Filter>Файлы ресурсов</Filter>
8083
</None>
8184
</ItemGroup>

ReversePolishNotation.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
#pragma once
22
#ifndef REVERSEPOLISHNOTATION_H
33
#define REVERSEPOLISHNOTATION_H
4-
#include "Translator.h"
4+
#include "SyntaxAnalisator.h"
55

66
typedef std::vector<std::map<std::string, int>> mystack;
77

8-
class ReversePolishNotation : public Translator
8+
class ReversePolishNotation : public SyntaxAnalisator
99
{
1010
public:
1111
ReversePolishNotation();
12+
protected:
13+
void reversePolishNotationAnalyze(std::string from_file_lexical, std::string to_file_RPN);
1214
~ReversePolishNotation();
13-
void reversePolishNotationAnalyze(std::string fileName_lexical, std::string fileName_RPN);
1415
private:
1516
mystack stack;
1617
int getPriority(std::string word);

SyntaxAnalisator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ bool SyntaxAnalisator::isLibrary_header(std::string const& word)
138138
return (int)word[0] == 34 && (int)word[word.length() - 1] == 34 && (int)word[word.length() - 2] == 104 && (int)word[word.length() - 3] == 46 ? true : false;
139139
}
140140

141-
void SyntaxAnalisator::analyze(std::string filePathOrName_C, std::string fileName_Path_SaveAnalis)
141+
void SyntaxAnalisator::makeSyntaxAnalyze(std::string filePathOrName_C, std::string fileName_Path_SaveAnalis)
142142
{
143143
std::ifstream fileC;
144144
std::ofstream fileAnalysis(fileName_Path_SaveAnalis);

SyntaxAnalisator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ class SyntaxAnalisator : public Translator
88
{
99
public:
1010
SyntaxAnalisator();
11+
protected:
12+
void makeSyntaxAnalyze(std::string from_file_C, std::string to_file_lexical);
1113
~SyntaxAnalisator();
12-
void analyze(std::string filePathOrName_C, std::string fileName_Path_SaveAnalis);
1314
private:
1415
void addCode(std::string str, std::map<std::string, std::string>& table, int numTable);
1516
int checkStringSingleElem(std::string const& word);

Translator.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,6 @@ std::map<std::string, std::string> Translator::getSymbols()
2525
return symbolsConst;
2626
}
2727

28-
void Translator::initialize(std::map<std::string, std::string> identifier, std::map<std::string, std::string> numberConst, std::map<std::string, std::string> symbolsConst)
29-
{
30-
this->identifier = identifier;
31-
this->symbolsConst = symbolsConst;
32-
this->numberConst = numberConst;
33-
}
34-
3528
bool Translator::isTypeDeclarationByCode(std::string type_code)
3629
{
3730
return type_code == "W1" || type_code == "W2" || type_code == "W3" || type_code == "W14" || type_code == "W15" || type_code == "W16" || type_code == "W17" ||

Translator.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@ class Translator
88
{
99
public:
1010
Translator();
11-
~Translator();
12-
virtual std::map<std::string, std::string> getIdentifier();
13-
virtual std::map<std::string, std::string> getNumbers();
14-
virtual std::map<std::string, std::string> getSymbols();
15-
virtual void initialize(std::map<std::string, std::string> identifier, std::map<std::string, std::string> numberConst, std::map<std::string, std::string> symbolsConst);
11+
std::map<std::string, std::string> getIdentifier();
12+
std::map<std::string, std::string> getNumbers();
13+
std::map<std::string, std::string> getSymbols();
1614
protected:
15+
~Translator();
1716
#define SIZE_serviceWord 20
1817
#define SIZE_separators 9
1918
#define SIZE_operation 20

TranslatorFromCToCSharp.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include "TranslatorFromCToCSharp.h"
2+
3+
4+
5+
TranslatorFromCToCSharp::TranslatorFromCToCSharp()
6+
{
7+
}
8+
9+
void TranslatorFromCToCSharp::makeTranslate(std::string source_file)
10+
{
11+
makeSyntaxAnalyze(source_file, "./translator_file/lexical.txt");
12+
reversePolishNotationAnalyze("./translator_file/lexical.txt", "./translator_file/RPN.txt");
13+
transalteToCSharp("./translator_file/RPN.txt", "./translator_file/CodeCSharp.cs");
14+
}
15+
16+
17+
TranslatorFromCToCSharp::~TranslatorFromCToCSharp()
18+
{
19+
}

TranslatorFromCToCSharp.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#pragma once
2+
#include "translate_csharp.h"
3+
class TranslatorFromCToCSharp : public Translate_csharp
4+
{
5+
public:
6+
TranslatorFromCToCSharp();
7+
~TranslatorFromCToCSharp();
8+
void makeTranslate(std::string source_file);
9+
private:
10+
11+
};
12+

Translator_LanguageC.cpp

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
#include "Translator_LanguageC.h"
22
#include "function.h"
3-
#include "SyntaxAnalisator.h"
4-
#include "ReversePolishNotation.h"
5-
#include "translate_csharp.h"
3+
#include "TranslatorFromCToCSharp.h"
64
#include <direct.h>
75

86
using namespace System;
97
using namespace System::Windows::Forms;
108
using namespace System::IO;
119

1210
std::string fileText_C = "";
13-
SyntaxAnalisator analisator;
14-
ReversePolishNotation RPN;
15-
Translate_csharp codeCSharp;
11+
TranslatorFromCToCSharp translator;
1612

1713
[STAThreadAttribute]
1814
void main(array<String^>^ args)
@@ -39,14 +35,14 @@ System::Void MethodsDevelopmentTranslator::Translator_LanguageC::Btn_loadFile_Cl
3935
{
4036
filePathName = openFileDialog1->FileName;
4137
try
42-
{
38+
{
4339
StreamReader^ file = File::OpenText(filePathName);
4440
tb_textC->Text = file->ReadToEnd();
4541
file->Close();
4642
marshalString(filePathName, fileText_C);
4743
btn_analisator->Enabled = true;
4844
mkdir("translator_file");
49-
45+
translator.makeTranslate(fileText_C);
5046
}
5147
catch (const std::exception&)
5248
{
@@ -64,9 +60,8 @@ System::Void MethodsDevelopmentTranslator::Translator_LanguageC::Btn_analisator_
6460
{
6561
if (tb_nameFileAnylize->Text != "" && isExtensionTXT(tb_nameFileAnylize->Text)==true)
6662
{
67-
std::string fileName = "";
68-
marshalString(tb_nameFileAnylize->Text, fileName);
69-
analisator.analyze(fileText_C, "./translator_file/lexical.txt");
63+
/*std::string fileName = "";
64+
marshalString(tb_nameFileAnylize->Text, fileName);*/
7065

7166
StreamReader^ fileAnalyze = File::OpenText("./translator_file/lexical.txt");
7267
tb_syntaxAnalisator->Text = fileAnalyze->ReadToEnd();
@@ -83,10 +78,8 @@ System::Void MethodsDevelopmentTranslator::Translator_LanguageC::Btn_reversePoli
8378
{
8479
if (tb_nameFileAnylize->Text != "" && isExtensionTXT(tb_nameFileAnylize->Text) == true)
8580
{
86-
RPN.initialize(analisator.getIdentifier(), analisator.getNumbers(), analisator.getSymbols());
8781
/*std::string file = "";
8882
marshalString(tb_nameFileAnylize->Text, file);*/
89-
RPN.reversePolishNotationAnalyze("./translator_file/lexical.txt", "./translator_file/RPN.txt");
9083

9184
StreamReader^ fileAnalyze = gcnew StreamReader("./translator_file/RPN.txt", System::Text::Encoding::GetEncoding(1251));
9285
tb_reversePolishNotation->Text = fileAnalyze->ReadToEnd();
@@ -104,9 +97,6 @@ System::Void MethodsDevelopmentTranslator::Translator_LanguageC::Btn_toCSharp_Cl
10497
{
10598
if (tb_nameFileAnylize->Text != "" && isExtensionTXT(tb_nameFileAnylize->Text) == true)
10699
{
107-
codeCSharp.initialize(RPN.getIdentifier(), RPN.getNumbers(), RPN.getSymbols());
108-
std::string file = "";
109-
codeCSharp.transalteToCSharp("./translator_file/RPN.txt", "./translator_file/CodeCSharp.cs");
110100

111101
StreamReader^ fileAnalyze = gcnew StreamReader("./translator_file/CodeCSharp.cs", System::Text::Encoding::GetEncoding(1251));
112102
tb_codeCSharp->Text = fileAnalyze->ReadToEnd();

0 commit comments

Comments
 (0)