@@ -27,7 +27,7 @@ void addComment(Tokenizer& tokenizer, CANDatabase& db) {
2727
2828 // Handle global comment
2929 Token currentToken = tokenizer.getNextToken ();
30- if (currentToken. type () == Token::Literal ) {
30+ if (currentToken == Token::StringLiteral ) {
3131 skipIf (tokenizer, " ;" );
3232 return ;
3333 }
@@ -38,43 +38,43 @@ void addComment(Tokenizer& tokenizer, CANDatabase& db) {
3838 warning (" Frame " + fId + " does not exist" , line);
3939 };
4040
41- if (commentType. image () == " SG_" ) {
41+ if (commentType == " SG_" ) {
4242 targetFrame = checkTokenType (tokenizer, Token::Number);
4343 targetSignal = checkTokenType (tokenizer, Token::Identifier);
44- commentValue = checkTokenType (tokenizer, Token::Literal );
44+ commentValue = checkTokenType (tokenizer, Token::StringLiteral );
4545 skipIf (tokenizer, " ;" );
4646
4747 auto frame_id = targetFrame.toUInt ();
4848 if (!db.contains (frame_id)) {
49- wWrongFrameId (targetFrame.image () , tokenizer.lineCount ());
49+ wWrongFrameId (targetFrame.image , tokenizer.lineCount ());
5050 return ;
5151 }
52- else if (!db.at (frame_id).contains (targetSignal.image () )) {
53- warning (" Frame " + targetFrame.image () +
54- " has no signal \" " + targetSignal.image () + " \" " ,
52+ else if (!db.at (frame_id).contains (targetSignal.image )) {
53+ warning (" Frame " + targetFrame.image +
54+ " has no signal \" " + targetSignal.image + " \" " ,
5555 tokenizer.lineCount ());
5656 return ;
5757 }
5858 db.at (frame_id)
59- .at (targetSignal.image () )
60- .setComment (commentValue.image () );
59+ .at (targetSignal.image )
60+ .setComment (commentValue.image );
6161 }
62- else if (commentType. image () == " BO_" ) {
62+ else if (commentType == " BO_" ) {
6363 targetFrame = checkTokenType (tokenizer, Token::Number);
64- commentValue = checkTokenType (tokenizer, Token::Literal );
64+ commentValue = checkTokenType (tokenizer, Token::StringLiteral );
6565 skipIf (tokenizer, " ;" );
6666
6767 auto frame_id = targetFrame.toUInt ();
6868 if (!db.contains (frame_id)) {
69- wWrongFrameId (targetFrame.image () , tokenizer.lineCount ());
69+ wWrongFrameId (targetFrame.image , tokenizer.lineCount ());
7070 return ;
7171 }
7272
73- db.at (frame_id).setComment (commentValue.image () );
73+ db.at (frame_id).setComment (commentValue.image );
7474 }
7575 else {
7676 warning (" Unsupported comment operation \" " +
77- commentType.image () + " \" " ,
77+ commentType.image + " \" " ,
7878 tokenizer.lineCount ());
7979 tokenizer.skipUntil (" ;" );
8080 }
@@ -84,19 +84,19 @@ void addBADirective(Tokenizer& tokenizer, CANDatabase& db) {
8484 Token infoType;
8585 assertToken (tokenizer, " BA_" );
8686
87- infoType = checkTokenType (tokenizer, Token::Literal );
88- if (infoType. image () == " GenMsgCycleTime" || infoType. image () == " CycleTime" ) {
87+ infoType = checkTokenType (tokenizer, Token::StringLiteral );
88+ if (infoType == " GenMsgCycleTime" || infoType == " CycleTime" ) {
8989 skipIf (tokenizer, " BO_" );
9090 Token frameId = checkTokenType (tokenizer, Token::Number);
9191 Token period = checkTokenType (tokenizer, Token::Number);
9292 skipIf (tokenizer, " ;" );
9393
94- if (period. image ()[ 0 ] == ' - ' ) {
94+ if (period == Token::NegativeNumber ) {
9595 warning (" cannot set negative period" ,
9696 tokenizer.lineCount ());
9797 return ;
9898 }
99- else if (frameId. image ()[ 0 ] == ' - ' ) {
99+ else if (frameId == Token::NegativeNumber ) {
100100 warning (" invalid frame id" ,
101101 tokenizer.lineCount ());
102102 return ;
@@ -114,7 +114,7 @@ void addBADirective(Tokenizer& tokenizer, CANDatabase& db) {
114114 }
115115 }
116116 else {
117- std::cout << " WARNING: Unrecognized BA_ command " << infoType.image ()
117+ std::cout << " WARNING: Unrecognized BA_ command " << infoType.image
118118 << " at line " << tokenizer.lineCount ()
119119 << std::endl;
120120 tokenizer.skipUntil (" ;" );
@@ -136,7 +136,7 @@ void parseNewSymbols(Tokenizer& tokenizer) {
136136 skipIf (tokenizer, " :" );
137137
138138 Token token = tokenizer.getNextToken ();
139- while (ns_choices.find (token.image ()) != ns_choices. end () ) {
139+ while (ns_choices.count (token.image ) > 0 ) {
140140 token = tokenizer.getNextToken ();
141141 }
142142 tokenizer.saveToken (token);
@@ -148,46 +148,46 @@ CANDatabase DBCParser::fromTokenizer(const std::string& name, Tokenizer& tokeniz
148148
149149 CANDatabase result (name);
150150
151- while (currentToken. type () != Token::Eof) {
152- // std::cout << currentToken.image() << std::endl;
153- if (currentToken. image () == " VERSION" ) {
154- currentToken = checkTokenType (tokenizer, Token::Literal );
155- std::cout << " DBC version: " << currentToken.image () << std::endl;
151+ while (currentToken != Token::Eof) {
152+ // std::cout << currentToken.image << std::endl;
153+ if (currentToken == " VERSION" ) {
154+ currentToken = checkTokenType (tokenizer, Token::StringLiteral );
155+ // std::cout << "DBC version: " << currentToken.image << std::endl;
156156 }
157- else if (currentToken. image () == " BU_" ) {
157+ else if (currentToken == " BU_" ) {
158158 std::set<std::string> ecus = parseECUs (tokenizer);
159159 std::cout << " The following ECUs have been defined:" << std::endl;
160160 for (const auto & ecu : ecus) {
161161 std::cout << ecu << " , " ;
162162 }
163163 std::cout << std::endl;
164164 }
165- else if (currentToken. image () == " BO_" ) {
165+ else if (currentToken == " BO_" ) {
166166 result.addFrame (parseFrame (tokenizer));
167167 }
168- else if (currentToken. image () == " SG_" ) {
168+ else if (currentToken == " SG_" ) {
169169 parseSignal (tokenizer);
170170 std::cout << " Identified signal outside frame -> WARNING !!! (line "
171171 << tokenizer.lineCount () << " )" << std::endl;
172172 }
173- else if (currentToken. image () == " CM_" ) {
173+ else if (currentToken == " CM_" ) {
174174 addComment (tokenizer, result);
175175 // TODO: Handle comments
176176 }
177- else if (currentToken. image () == " BA_" ) {
177+ else if (currentToken == " BA_" ) {
178178 addBADirective (tokenizer, result);
179179 }
180- else if (currentToken. image () == " VAL_" ) {
180+ else if (currentToken == " VAL_" ) {
181181 parseSignalChoices (tokenizer, result);
182182 }
183- else if (currentToken. image () == " NS_" ) {
183+ else if (currentToken == " NS_" ) {
184184 parseNewSymbols (tokenizer);
185185 }
186- else if (currentToken. image () == " BS_" ) {
186+ else if (currentToken == " BS_" ) {
187187 skipIf (tokenizer, " :" );
188188
189189 currentToken = tokenizer.getNextToken ();
190- if (currentToken. type () != Token::Number)
190+ if (currentToken != Token::Number)
191191 continue ;
192192
193193 Token baudrate = checkCurrentTokenType (currentToken, Token::Number, tokenizer.lineCount ());
@@ -199,7 +199,7 @@ CANDatabase DBCParser::fromTokenizer(const std::string& name, Tokenizer& tokeniz
199199 // TODO: handle the statement
200200 }
201201 else {
202- std::cerr << currentToken.image () << " is not a valid statement (yet). The statement is skipped." << std::endl;
202+ std::cerr << currentToken.image << " is not a valid statement (yet). The statement is skipped." << std::endl;
203203 tokenizer.skipUntil (" ;" );
204204 }
205205 currentToken = tokenizer.getNextToken ();
@@ -222,7 +222,7 @@ CANSignal parseSignal(Tokenizer& tokenizer) {
222222 length = checkTokenType (tokenizer, Token::Number);
223223 skipIf (tokenizer, " @" );
224224 endianess = checkTokenType (tokenizer, Token::Number);
225- signedness = checkTokenType (tokenizer, Token::Sign );
225+ signedness = checkTokenType (tokenizer, Token::ArithmeticSign );
226226 skipIf (tokenizer, " (" );
227227 scale = checkTokenType (tokenizer, Token::Number);
228228 skipIf (tokenizer, " ," );
@@ -233,27 +233,27 @@ CANSignal parseSignal(Tokenizer& tokenizer) {
233233 skipIf (tokenizer, " |" );
234234 max = checkTokenType (tokenizer, Token::Number);
235235 skipIf (tokenizer, " ]" );
236- unit = checkTokenType (tokenizer, Token::Literal );
236+ unit = checkTokenType (tokenizer, Token::StringLiteral );
237237
238238 targetECU = checkTokenType (tokenizer, Token::Identifier); // Ignored for now
239239 Token currentToken = tokenizer.getNextToken ();
240- while (currentToken. image () == " ," ) {
240+ while (currentToken == " ," ) {
241241 targetECU = checkTokenType (tokenizer, Token::Identifier);
242242 currentToken = tokenizer.getNextToken ();
243243 }
244244
245- if (currentToken. type () != Token::Eof)
245+ if (currentToken != Token::Eof)
246246 tokenizer.saveToken (currentToken);
247247
248248 return CANSignal (
249- signalName.image () ,
250- std::stoul ( startBit.image () ),
251- std::stoul ( length.image () ),
252- std::stof ( scale.image () ),
253- std::stof ( offset.image () ),
254- signedness. image () == " -" ? CANSignal::Signed : CANSignal::Unsigned,
255- endianess. image () == " 0" ? CANSignal::BigEndian : CANSignal::LittleEndian,
256- CANSignal::Range::fromString (min.image () , max.image () )
249+ signalName.image ,
250+ startBit.toUInt ( ),
251+ length.toUInt ( ),
252+ scale.toDouble ( ),
253+ offset.toDouble ( ),
254+ signedness == " -" ? CANSignal::Signed : CANSignal::Unsigned,
255+ endianess == " 0" ? CANSignal::BigEndian : CANSignal::LittleEndian,
256+ CANSignal::Range::fromString (min.image , max.image )
257257 );
258258}
259259
@@ -274,16 +274,16 @@ CANFrame parseFrame(Tokenizer& tokenizer) {
274274 ecu = checkTokenType (tokenizer, Token::Identifier);
275275
276276 CANFrame result (
277- name.image () , id.toUInt (), dlc.toUInt ());
277+ name.image , id.toUInt (), dlc.toUInt ());
278278
279279 Token currentToken = tokenizer.getNextToken ();
280280
281- while (currentToken. image () == " SG_" ) {
281+ while (currentToken == " SG_" ) {
282282 result.addSignal (parseSignal (tokenizer));
283283 currentToken = tokenizer.getNextToken ();
284284 }
285285
286- if (currentToken. type () != Token::Eof)
286+ if (currentToken != Token::Eof)
287287 tokenizer.saveToken (currentToken);
288288
289289 return result;
@@ -299,13 +299,13 @@ std::set<std::string> parseECUs(Tokenizer& tokenizer) {
299299 Token currentToken = checkTokenType (tokenizer, Token::Identifier);
300300
301301 // Looking for all the identifiers on the same line
302- while (currentToken. type () != Token::Eof &&
302+ while (currentToken != Token::Eof &&
303303 currentLine == tokenizer.lineCount ()) {
304- result.insert (currentToken.image () );
304+ result.insert (currentToken.image );
305305 currentToken = checkTokenType (tokenizer, Token::Identifier);
306306 }
307307
308- if (currentToken. type () != Token::Eof)
308+ if (currentToken != Token::Eof)
309309 tokenizer.saveToken (currentToken);
310310
311311 return result;
@@ -324,16 +324,16 @@ void parseSignalChoices(Tokenizer& tokenizer, CANDatabase& db) {
324324 targetSignal = checkTokenType (tokenizer, Token::Identifier);
325325
326326 Token currentToken = tokenizer.getNextToken ();
327- while (currentToken. image () != " ;" &&
328- currentToken. type () != Token::Eof) {
327+ while (currentToken != " ;" &&
328+ currentToken != Token::Eof) {
329329 currentVal = checkCurrentTokenType (currentToken, Token::Number,
330330 tokenizer.lineCount ());
331- currentLabel = checkTokenType (tokenizer, Token::Literal );
331+ currentLabel = checkTokenType (tokenizer, Token::StringLiteral );
332332
333333 targetChoices.insert (
334334 std::make_pair (
335335 currentVal.toUInt (),
336- currentLabel.image ()
336+ currentLabel.image
337337 )
338338 );
339339
@@ -343,14 +343,14 @@ void parseSignalChoices(Tokenizer& tokenizer, CANDatabase& db) {
343343
344344 unsigned long long frame_id = targetFrame.toUInt ();
345345 if (!db.contains (frame_id) ||
346- !db.at (frame_id).contains (targetSignal.image () )) {
347- warning (" Cannot assign enum to signal \" " + targetFrame.image () + " /" +
348- targetSignal.image () + " \" " ,
346+ !db.at (frame_id).contains (targetSignal.image )) {
347+ warning (" Cannot assign enum to signal \" " + targetFrame.image + " /" +
348+ targetSignal.image + " \" " ,
349349 tokenizer.lineCount ());
350350 return ;
351351 }
352352
353353 db.at (frame_id)
354- .at (targetSignal.image () )
354+ .at (targetSignal.image )
355355 .setChoices (targetChoices);
356356}
0 commit comments