11#include " table.h"
22#include " function.h"
33
4- bool isLetter (char elem)
4+ bool isLetter (int elem)
55{
6- return (elem >= ' 65 ' && elem <= ' 90 ' ) || (elem >= ' 97 ' && elem <= ' 122' ) ? true : false ;
6+ return (elem >= 65 && elem <= 90 ) || (elem >= 97 && elem <= 122 ) ? true : false ;
77}
88
9- bool isDigit (char elem)
9+ bool isDigit (int elem)
1010{
11- return elem >= ' 48 ' && elem <= ' 57 ' ? true : false ;
11+ return elem >= 48 && elem <= 57 ? true : false ;
1212}
1313
1414bool isNumber (string num)
1515{
1616 for (int i = 0 ; i < num.length (); i++)
17- if (isDigit (num[i]) == false )
17+ if (isDigit (( int ) num[i]) == false )
1818 return false ;
1919 return true ;
2020}
2121
22+ bool isLibrary_header (string word)
23+ {
24+ 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 ;
25+ }
26+
2227string getServiceWordCode (string str)
2328{
2429 for (int i = 0 ; i < SIZE_serviceWord; i++)
@@ -67,22 +72,43 @@ string getSymbolsConstCode(string str)
6772 return " \0 " ;
6873}
6974
75+ void addCode (string str, map<string, string> table, int numTable)
76+ {
77+ int indexCode = 0 ;
78+ for (const auto & word : table)
79+ {
80+ indexCode++;
81+ }
82+ indexCode++;
83+ if (numTable==1 )
84+ table.insert (pair<string, string>(str, " I" + indexCode));
85+ if (numTable==2 )
86+ table.insert (pair<string, string>(str, " N" + indexCode));
87+ if (numTable==3 )
88+ table.insert (pair<string, string>(str, " C" + indexCode));
89+ }
90+
91+
7092string getCodeWordLength_1 (string word)
7193{
7294 string code = getOperationsCode (word);
7395 if (code == " \0 " )
7496 code = getSeparatorsCode (word);
7597 if (code==" \0 " )
7698 {
77- if (isDigit (word[0 ]) == true )
99+ if (isDigit (( int ) word[0 ]) == true )
78100 {
79101 code = getNumberConstCode (word);
80- // TODO: Add constant
102+ if (code ==" \0 " )
103+ addCode (word, numberConst, 2 );
104+ return getNumberConstCode (word);
81105 }
82- if (isLetter (word[0 ]) == true )
106+ if (isLetter (( int ) word[0 ]) == true )
83107 {
84108 code = getIdentifierCode (word);
85- // TODO: Add word
109+ if (code==" \0 " )
110+ addCode (word,identifier,1 );
111+ return getIdentifierCode (word);
86112 }
87113 }
88114 else
@@ -91,8 +117,11 @@ string getCodeWordLength_1(string word)
91117 }
92118}
93119
120+
94121string getCodeWordLengthGreaterOne (string word)
95122{
123+ if (isLetter ((int )word[0 ]) == true && word[1 ] == ' *' )
124+ return getSeparatorsCode (word);
96125 string code = getServiceWordCode (word);
97126 if (code == " \0 " )
98127 code = getOperationsCode (word);
@@ -101,24 +130,31 @@ string getCodeWordLengthGreaterOne(string word)
101130 if (isNumber (word) == true )
102131 {
103132 code = getNumberConstCode (word);
133+ if (code==" \0 " )
134+ addCode (word, numberConst, 2 );
135+ return getNumberConstCode (word);
104136 }
105137 else
106138 {
107- if (word[0 ] == ' 34 ' )
139+ if (( int ) word[0 ] == 34 )
108140 {
109- code = getSymbolsConstCode (word);
110- if (code == " \0 " )
141+ if (isLibrary_header (word) == false )
111142 {
112- // TODO:ADD const sym
143+ code = getSymbolsConstCode (word);
144+ if (code == " \0 " )
145+ addCode (word, symbolsConst, 3 );
146+ return getSymbolsConstCode (word);
113147 }
148+ else
149+ goto addCodeIdentifier;
114150 }
115151 else
116152 {
153+ addCodeIdentifier:
117154 code = getIdentifierCode (word);
118155 if (code == " \0 " )
119- {
120- // TODO:ADD id
121- }
156+ addCode (word, identifier, 1 );
157+ return getIdentifierCode (word);
122158 }
123159
124160 }
@@ -130,11 +166,7 @@ string getCodeWordLengthGreaterOne(string word)
130166string getCodeWord (string word)
131167{
132168 if (word.length () == 1 )
133- {
134169 return getCodeWordLength_1 (word);
135- }
136170 else
137- {
138171 return getCodeWordLengthGreaterOne (word);
139- }
140172}
0 commit comments