Leave standard function names hardcoded, as these are considered keywords even though
they may not be implemented in the library.
--- a/stage1_2/iec.y Mon Apr 04 14:32:21 2011 +0100
+++ b/stage1_2/iec.y Mon Apr 04 15:22:42 2011 +0100
@@ -7971,11 +7971,6 @@
FILE *in_file = NULL, *lib_file = NULL;
char *libfilename = NULL;
- for(int i = 0; standard_function_names[i] != NULL; i++)
- if (library_element_symtable.find_value(standard_function_names[i]) ==
- library_element_symtable.end_value())
- library_element_symtable.insert(standard_function_names[i], standard_function_name_token);
-
if((in_file = fopen(filename, "r")) == NULL) {
char *errmsg = strdup2("Error opening main file ", filename);
perror(errmsg);
@@ -8028,6 +8023,11 @@
/* if by any chance the library is not complete, we
* now add the missing reserved keywords to the list!!!
*/
+ for(int i = 0; standard_function_names[i] != NULL; i++)
+ if (library_element_symtable.find_value(standard_function_names[i]) ==
+ library_element_symtable.end_value())
+ library_element_symtable.insert(standard_function_names[i], standard_function_name_token);
+
for(int i = 0; standard_function_block_names[i] != NULL; i++)
if (library_element_symtable.find_value(standard_function_block_names[i]) ==
library_element_symtable.end_value())
--- a/stage1_2/standard_function_names.c Mon Apr 04 14:32:21 2011 +0100
+++ b/stage1_2/standard_function_names.c Mon Apr 04 15:22:42 2011 +0100
@@ -36,7 +36,6 @@
const char *standard_function_names[] = {
-/*
"REAL_TO_SINT",
"REAL_TO_LINT",
"REAL_TO_DINT",
@@ -401,7 +400,6 @@
"INT_TO_ULINT",
"INT_TO_BOOL",
"INT_TO_TIME",
-*/
"TRUNC",
"BCD_TO_UDINT",
"BCD_TO_UINT",
@@ -411,10 +409,8 @@
"UINT_TO_BCD",
"USINT_TO_BCD",
"ULINT_TO_BCD",
-/*
"DATE_AND_TIME_TO_TIME_OF_DAY",
"DATE_AND_TIME_TO_DATE",
-*/
"ABS",
"SQRT",
"LN",