Skip to content

Commit b7cb1c0

Browse files
#TDP - 16 New class Reverse Polish Notation
add var stack type = vector<map<str,int>>
1 parent a9e9584 commit b7cb1c0

9 files changed

+73
-55
lines changed

MethodsDevelopmentTranslator.vcxproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@
156156
<DependentUpon>Translator_LanguageC.h</DependentUpon>
157157
</EmbeddedResource>
158158
</ItemGroup>
159+
<ItemGroup>
160+
<Text Include="C.txt" />
161+
</ItemGroup>
159162
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
160163
<ImportGroup Label="ExtensionTargets">
161164
</ImportGroup>

MethodsDevelopmentTranslator.vcxproj.filters

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,9 @@
5151
<Filter>Файлы заголовков</Filter>
5252
</ClInclude>
5353
</ItemGroup>
54+
<ItemGroup>
55+
<Text Include="C.txt">
56+
<Filter>Файлы ресурсов</Filter>
57+
</Text>
58+
</ItemGroup>
5459
</Project>

ReversePolishNotation.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,21 @@ ReversePolishNotation::ReversePolishNotation()
66
}
77
ReversePolishNotation::~ReversePolishNotation()
88
{
9-
}
9+
}
10+
11+
void ReversePolishNotation::reversePolishNotationAnalyze(std::string filePathOrName_C, std::string fileName_Path_SaveAnalis)
12+
{
13+
14+
}
15+
16+
int ReversePolishNotation::getPriority(std::string word)
17+
{
18+
//priority
19+
for (auto& item : priority)
20+
{
21+
if (item.first == word)
22+
return item.second;
23+
}
24+
return -1;
25+
}
26+
}

ReversePolishNotation.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,19 @@
33
#define REVERSEPOLISHNOTATION_H
44
#include "Translator.h"
55

6+
typedef std::vector<std::map<std::string, int>> stack_type;
7+
68
class ReversePolishNotation : public Translator
79
{
810
public:
911
ReversePolishNotation();
1012
~ReversePolishNotation();
13+
void reversePolishNotationAnalyze(std::string filePathOrName_C, std::string fileName_Path_SaveAnalis);
14+
private:
15+
stack_type stack;
16+
int getPriority(std::string word);
17+
18+
1119
};
1220

1321
#endif

Translator.h

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Translator
1010
Translator();
1111
~Translator();
1212
protected:
13-
#define SIZE_serviceWord 11
13+
#define SIZE_serviceWord 12
1414
#define SIZE_separators 9
1515
#define SIZE_operation 20
1616
#define SIZE_columns 2
@@ -26,7 +26,8 @@ class Translator
2626
{"#include","W8"},
2727
{"malloc","W9"},
2828
{"sizeof","W10"},
29-
{"return","W11"}
29+
{"return","W11"},
30+
{"for","W12"}
3031
};
3132
std::string const separators[SIZE_separators][SIZE_columns] =
3233
{
@@ -67,6 +68,29 @@ class Translator
6768
std::map<std::string, std::string> identifier;
6869
std::map<std::string, std::string> numberConst;
6970
std::map<std::string, std::string> symbolsConst;
71+
std::map<std::string, int> priority =
72+
{
73+
// if ( [ ÀÝÌ Ô while for
74+
{"W5",0}, { "R3",0 },{ "R1",0 },{ "ÀÝÌ",0 },{ "Ô",0 },{"W7", 0},{"W12", 0},
75+
// { , ; ) ] else
76+
{"R5", 1},{ "R8",1 },{ "R7",1 },{ "R3",1 },{"R2", 1},{"W6", 1},
77+
// =
78+
{"O5", 2},
79+
// |
80+
{"|", 3},
81+
// &
82+
{"&", 4},
83+
// not
84+
{"not", 5},
85+
// < > <= >= == != && ||
86+
{"O8", 6},{"O7", 6},{"O12", 6},{"O11", 6},{"O9", 6},{"O10", 6},{"O17", 6},{"O18", 6},
87+
//+ - ++ -- -= += *= /=
88+
{"O1", 7},{"O2", 7},{"O20", 7},{"O19", 7},{"O15", 7},{"O14", 7},{"O16", 7},{"O13", 7},
89+
//* / %
90+
{"O3", 8},{"O4", 8},{"O6", 8},
91+
// : }
92+
{":", 9},{"R6", 9},{"W11", 9}
93+
};
7094
};
7195

7296
#endif

Translator_LanguageC.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,8 @@ System::Void MethodsDevelopmentTranslator::Translator_LanguageC::Btn_analisator_
7171
}
7272

7373
}
74+
75+
System::Void MethodsDevelopmentTranslator::Translator_LanguageC::Btn_reversePolishNotation_Click(System::Object^ sender, System::EventArgs^ e)
76+
{
77+
return System::Void();
78+
}

Translator_LanguageC.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ namespace MethodsDevelopmentTranslator {
141141
this->btn_reversePolishNotation->TabIndex = 6;
142142
this->btn_reversePolishNotation->Text = L"Reverse Polish notation";
143143
this->btn_reversePolishNotation->UseVisualStyleBackColor = true;
144+
this->btn_reversePolishNotation->Click += gcnew System::EventHandler(this, &Translator_LanguageC::Btn_reversePolishNotation_Click);
144145
//
145146
// Translator_LanguageC
146147
//
@@ -171,5 +172,6 @@ namespace MethodsDevelopmentTranslator {
171172
#pragma endregion
172173
private: System::Void Btn_loadFile_Click(System::Object^ sender, System::EventArgs^ e);
173174
System::Void Btn_analisator_Click(System::Object^ sender, System::EventArgs^ e);
175+
System::Void Btn_reversePolishNotation_Click(System::Object^ sender, System::EventArgs^ e);
174176
};
175177
}

lexical.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ R5
3434
W1 I7 O5 I3 R3 N3 R4 R7
3535
W1 O3 I13 O5 I6 R3 N3 R4 R7
3636
W1 I14 O5 N1 R7
37-
I15 R3 W1 I16 O5 N1 R7 I16 O8 I7 R7 I16 O20 R4
37+
W12 R3 W1 I15 O5 N1 R7 I15 O8 I7 R7 I15 O20 R4
3838
R5
39-
W5 R3 I16 O8 N4 O17 I16 O7 N1 R4
40-
I17 R3 C1 R8 I16 R8 I13 R1 I16 R2 R4 R7
41-
I14 O1 O5 I13 R1 I16 R2 R7
39+
W5 R3 I15 O8 N4 O17 I15 O7 N1 R4
40+
I16 R3 C1 R8 I15 R8 I13 R1 I15 R2 R4 R7
41+
I14 O1 O5 I13 R1 I15 R2 R7
4242
R6
43-
I17 R3 C2 R8 I14 R4 R7
44-
I18 R3 I13 R4 R7
43+
I16 R3 C2 R8 I14 R4 R7
44+
I17 R3 I13 R4 R7
4545
W11 N1 R7
4646
R6

name file.txt

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)