145 * numeric literal '30' must then be considered a LINT so the ADD function may be called |
145 * numeric literal '30' must then be considered a LINT so the ADD function may be called |
146 * with all inputs of the same data type. |
146 * with all inputs of the same data type. |
147 * If 'x' were a SINT, then the '30' would have to be a SINT too! |
147 * If 'x' were a SINT, then the '30' would have to be a SINT too! |
148 */ |
148 */ |
149 |
149 |
150 /* NOTE: all integer and real literal tokens will always be positive (i.e. no leading '-') |
150 /* NOTE: all integer_c and real_c tokens will always be positive (i.e. no leading '-') |
151 * due to the way the source code is parsed by iec.flex. |
151 * due to the way the source code is parsed by iec.flex. |
152 */ |
152 */ |
153 void *get_sizeof_datatype_c::visit(real_c *symbol) { |
153 void *get_sizeof_datatype_c::visit(real_c *symbol) { |
154 return _encode_int(32); |
154 return _encode_int(32); |
155 } |
155 } |
156 |
156 |
157 /* NOTE: all integer and real literal tokens will always be positive (i.e. no leading '-') |
157 void *get_sizeof_datatype_c::visit(neg_real_c *symbol) { |
|
158 return symbol->exp->accept(*this); |
|
159 } |
|
160 |
|
161 |
|
162 /* NOTE: all integer_c and real_c literal tokens will always be positive (i.e. no leading '-') |
158 * due to the way the source code is parsed by iec.flex. |
163 * due to the way the source code is parsed by iec.flex. |
159 */ |
164 */ |
160 void *get_sizeof_datatype_c::visit(integer_c *symbol) { |
165 void *get_sizeof_datatype_c::visit(integer_c *symbol) { |
161 int bitsize = 0; |
166 int bitsize = 0; |
162 |
167 |
325 |
335 |
326 |
336 |
327 /***********************************/ |
337 /***********************************/ |
328 /* B 1.3.1 - Elementary Data Types */ |
338 /* B 1.3.1 - Elementary Data Types */ |
329 /***********************************/ |
339 /***********************************/ |
330 // void *get_sizeof_datatype_c::visit(time_type_name_c *symbol) {return _encode_int(0); } |
340 // void *get_sizeof_datatype_c::visit(time_type_name_c *symbol) {return _encode_int(0); } |
331 void *get_sizeof_datatype_c::visit(bool_type_name_c *symbol) {return _encode_int(1); } |
341 void *get_sizeof_datatype_c::visit(bool_type_name_c *symbol) {return _encode_int(1); } |
332 void *get_sizeof_datatype_c::visit(sint_type_name_c *symbol) {return _encode_int(8); } |
342 void *get_sizeof_datatype_c::visit(sint_type_name_c *symbol) {return _encode_int(8); } |
333 void *get_sizeof_datatype_c::visit(int_type_name_c *symbol) {return _encode_int(16);} |
343 void *get_sizeof_datatype_c::visit(int_type_name_c *symbol) {return _encode_int(16);} |
334 void *get_sizeof_datatype_c::visit(dint_type_name_c *symbol) {return _encode_int(32);} |
344 void *get_sizeof_datatype_c::visit(dint_type_name_c *symbol) {return _encode_int(32);} |
335 void *get_sizeof_datatype_c::visit(lint_type_name_c *symbol) {return _encode_int(64);} |
345 void *get_sizeof_datatype_c::visit(lint_type_name_c *symbol) {return _encode_int(64);} |
336 void *get_sizeof_datatype_c::visit(usint_type_name_c *symbol) {return _encode_int(8); } |
346 void *get_sizeof_datatype_c::visit(usint_type_name_c *symbol) {return _encode_int(8); } |
337 void *get_sizeof_datatype_c::visit(uint_type_name_c *symbol) {return _encode_int(16);} |
347 void *get_sizeof_datatype_c::visit(uint_type_name_c *symbol) {return _encode_int(16);} |
338 void *get_sizeof_datatype_c::visit(udint_type_name_c *symbol) {return _encode_int(32);} |
348 void *get_sizeof_datatype_c::visit(udint_type_name_c *symbol) {return _encode_int(32);} |
339 void *get_sizeof_datatype_c::visit(ulint_type_name_c *symbol) {return _encode_int(64);} |
349 void *get_sizeof_datatype_c::visit(ulint_type_name_c *symbol) {return _encode_int(64);} |
340 void *get_sizeof_datatype_c::visit(real_type_name_c *symbol) {return _encode_int(32);} |
350 void *get_sizeof_datatype_c::visit(real_type_name_c *symbol) {return _encode_int(32);} |
341 void *get_sizeof_datatype_c::visit(lreal_type_name_c *symbol) {return _encode_int(64);} |
351 void *get_sizeof_datatype_c::visit(lreal_type_name_c *symbol) {return _encode_int(64);} |
342 // void *get_sizeof_datatype_c::visit(date_type_name_c *symbol) {return _encode_int(0); } |
352 // void *get_sizeof_datatype_c::visit(date_type_name_c *symbol) {return _encode_int(0); } |
343 // void *get_sizeof_datatype_c::visit(tod_type_name_c *symbol) {return _encode_int(0); } |
353 // void *get_sizeof_datatype_c::visit(tod_type_name_c *symbol) {return _encode_int(0); } |
344 // void *get_sizeof_datatype_c::visit(dt_type_name_c *symbol) {return _encode_int(0); } |
354 // void *get_sizeof_datatype_c::visit(dt_type_name_c *symbol) {return _encode_int(0); } |
345 void *get_sizeof_datatype_c::visit(byte_type_name_c *symbol) {return _encode_int(8); } |
355 void *get_sizeof_datatype_c::visit(byte_type_name_c *symbol) {return _encode_int(8); } |
346 void *get_sizeof_datatype_c::visit(word_type_name_c *symbol) {return _encode_int(16);} |
356 void *get_sizeof_datatype_c::visit(word_type_name_c *symbol) {return _encode_int(16);} |
347 void *get_sizeof_datatype_c::visit(dword_type_name_c *symbol) {return _encode_int(32);} |
357 void *get_sizeof_datatype_c::visit(dword_type_name_c *symbol) {return _encode_int(32);} |
348 void *get_sizeof_datatype_c::visit(lword_type_name_c *symbol) {return _encode_int(64);} |
358 void *get_sizeof_datatype_c::visit(lword_type_name_c *symbol) {return _encode_int(64);} |
349 // void *get_sizeof_datatype_c::visit(string_type_name_c *symbol) {return _encode_int(0); } |
359 // void *get_sizeof_datatype_c::visit(string_type_name_c *symbol) {return _encode_int(0); } |
350 // void *get_sizeof_datatype_c::visit(wstring_type_name_c *symbol) {return _encode_int(0); } |
360 // void *get_sizeof_datatype_c::visit(wstring_type_name_c *symbol) {return _encode_int(0); } |
351 /******************************************************/ |
361 /******************************************************/ |
352 /* Extensions to the base standard as defined in */ |
362 /* Extensions to the base standard as defined in */ |
353 /* "Safety Software Technical Specification, */ |
363 /* "Safety Software Technical Specification, */ |
354 /* Part 1: Concepts and Function Blocks, */ |
364 /* Part 1: Concepts and Function Blocks, */ |
355 /* Version 1.0 – Official Release" */ |
365 /* Version 1.0 – Official Release" */ |
356 /* by PLCopen - Technical Committee 5 - 2006-01-31 */ |
366 /* by PLCopen - Technical Committee 5 - 2006-01-31 */ |
357 /******************************************************/ |
367 /******************************************************/ |
358 void *get_sizeof_datatype_c::visit(safebool_type_name_c *symbol) {return _encode_int(1);} |
368 // void *get_sizeof_datatype_c::visit(safetime_type_name_c *symbol); {return _encode_int(0); } |
|
369 void *get_sizeof_datatype_c::visit(safebool_type_name_c *symbol) {return _encode_int(1); } |
|
370 void *get_sizeof_datatype_c::visit(safesint_type_name_c *symbol) {return _encode_int(8); } |
|
371 void *get_sizeof_datatype_c::visit(safeint_type_name_c *symbol) {return _encode_int(16);} |
|
372 void *get_sizeof_datatype_c::visit(safedint_type_name_c *symbol) {return _encode_int(32);} |
|
373 void *get_sizeof_datatype_c::visit(safelint_type_name_c *symbol) {return _encode_int(64);} |
|
374 void *get_sizeof_datatype_c::visit(safeusint_type_name_c *symbol) {return _encode_int(8); } |
|
375 void *get_sizeof_datatype_c::visit(safeuint_type_name_c *symbol) {return _encode_int(16);} |
|
376 void *get_sizeof_datatype_c::visit(safeudint_type_name_c *symbol) {return _encode_int(32);} |
|
377 void *get_sizeof_datatype_c::visit(safeulint_type_name_c *symbol) {return _encode_int(64);} |
|
378 void *get_sizeof_datatype_c::visit(safereal_type_name_c *symbol) {return _encode_int(32);} |
|
379 void *get_sizeof_datatype_c::visit(safelreal_type_name_c *symbol) {return _encode_int(64);} |
|
380 // void *get_sizeof_datatype_c::visit(safedate_type_name_c *symbol); {return _encode_int(0); } |
|
381 // void *get_sizeof_datatype_c::visit(safetod_type_name_c *symbol); {return _encode_int(0); } |
|
382 // void *get_sizeof_datatype_c::visit(safedt_type_name_c *symbol); {return _encode_int(0); } |
|
383 void *get_sizeof_datatype_c::visit(safebyte_type_name_c *symbol) {return _encode_int(8); } |
|
384 void *get_sizeof_datatype_c::visit(safeword_type_name_c *symbol) {return _encode_int(16);} |
|
385 void *get_sizeof_datatype_c::visit(safedword_type_name_c *symbol) {return _encode_int(32);} |
|
386 void *get_sizeof_datatype_c::visit(safelword_type_name_c *symbol) {return _encode_int(64);} |
|
387 // void *get_sizeof_datatype_c::visit(safestring_type_name_c *symbol); {return _encode_int(0); } |
|
388 // void *get_sizeof_datatype_c::visit(safewstring_type_name_c *symbol); {return _encode_int(0); } |
|
389 |
359 |
390 |
360 /********************************/ |
391 /********************************/ |
361 /* B 1.3.3 - Derived data types */ |
392 /* B 1.3.3 - Derived data types */ |
362 /********************************/ |
393 /********************************/ |
363 // Not yet supported... |
394 // Not yet supported... |