1032 |
1032 |
1033 /******************************/ |
1033 /******************************/ |
1034 /* B 1.2.1 - Numeric Literals */ |
1034 /* B 1.2.1 - Numeric Literals */ |
1035 /******************************/ |
1035 /******************************/ |
1036 TRUE return TRUE; /* Keyword */ |
1036 TRUE return TRUE; /* Keyword */ |
1037 BOOL#1 return TRUE; /* Keyword (Data Type) + Delimiter */ |
1037 BOOL#1 return boolean_true_literal_token; |
1038 BOOL#TRUE return TRUE; /* Keyword (Data Type) + Delimiter + Keyword */ |
1038 BOOL#TRUE return boolean_true_literal_token; |
|
1039 SAFEBOOL#1 {if (get_opt_safe_extensions()) {return safeboolean_true_literal_token;} else{REJECT;}} /* Keyword (Data Type) */ |
|
1040 SAFEBOOL#TRUE {if (get_opt_safe_extensions()) {return safeboolean_true_literal_token;} else{REJECT;}} /* Keyword (Data Type) */ |
|
1041 |
1039 FALSE return FALSE; /* Keyword */ |
1042 FALSE return FALSE; /* Keyword */ |
1040 BOOL#0 return FALSE; /* Keyword (Data Type) + Delimiter */ |
1043 BOOL#0 return boolean_false_literal_token; |
1041 BOOL#FALSE return FALSE; /* Keyword (Data Type) + Delimiter + Keyword */ |
1044 BOOL#FALSE return boolean_false_literal_token; |
|
1045 SAFEBOOL#0 {if (get_opt_safe_extensions()) {return safeboolean_false_literal_token;} else{REJECT;}} /* Keyword (Data Type) */ |
|
1046 SAFEBOOL#FALSE {if (get_opt_safe_extensions()) {return safeboolean_false_literal_token;} else{REJECT;}} /* Keyword (Data Type) */ |
1042 |
1047 |
1043 |
1048 |
1044 /************************/ |
1049 /************************/ |
1045 /* B 1.2.3.1 - Duration */ |
1050 /* B 1.2.3.1 - Duration */ |
1046 /************************/ |
1051 /************************/ |
1062 |
1067 |
1063 |
1068 |
1064 /***********************************/ |
1069 /***********************************/ |
1065 /* B 1.3.1 - Elementary Data Types */ |
1070 /* B 1.3.1 - Elementary Data Types */ |
1066 /***********************************/ |
1071 /***********************************/ |
|
1072 BOOL return BOOL; /* Keyword (Data Type) */ |
|
1073 |
1067 BYTE return BYTE; /* Keyword (Data Type) */ |
1074 BYTE return BYTE; /* Keyword (Data Type) */ |
1068 WORD return WORD; /* Keyword (Data Type) */ |
1075 WORD return WORD; /* Keyword (Data Type) */ |
1069 DWORD return DWORD; /* Keyword (Data Type) */ |
1076 DWORD return DWORD; /* Keyword (Data Type) */ |
1070 LWORD return LWORD; /* Keyword (Data Type) */ |
1077 LWORD return LWORD; /* Keyword (Data Type) */ |
1071 |
1078 |
|
1079 SINT return SINT; /* Keyword (Data Type) */ |
|
1080 INT return INT; /* Keyword (Data Type) */ |
|
1081 DINT return DINT; /* Keyword (Data Type) */ |
|
1082 LINT return LINT; /* Keyword (Data Type) */ |
|
1083 |
|
1084 USINT return USINT; /* Keyword (Data Type) */ |
|
1085 UINT return UINT; /* Keyword (Data Type) */ |
|
1086 UDINT return UDINT; /* Keyword (Data Type) */ |
|
1087 ULINT return ULINT; /* Keyword (Data Type) */ |
|
1088 |
|
1089 REAL return REAL; /* Keyword (Data Type) */ |
|
1090 LREAL return LREAL; /* Keyword (Data Type) */ |
|
1091 |
|
1092 WSTRING return WSTRING; /* Keyword (Data Type) */ |
|
1093 STRING return STRING; /* Keyword (Data Type) */ |
|
1094 |
|
1095 TIME return TIME; /* Keyword (Data Type) */ |
|
1096 DATE return DATE; /* Keyword (Data Type) */ |
|
1097 DT return DT; /* Keyword (Data Type) */ |
|
1098 TOD return TOD; /* Keyword (Data Type) */ |
|
1099 DATE_AND_TIME return DATE_AND_TIME; /* Keyword (Data Type) */ |
|
1100 TIME_OF_DAY return TIME_OF_DAY; /* Keyword (Data Type) */ |
|
1101 |
|
1102 /*****************************************************************/ |
|
1103 /* Keywords defined in "Safety Software Technical Specification" */ |
|
1104 /*****************************************************************/ |
|
1105 /* |
|
1106 * NOTE: The following keywords are define in |
|
1107 * "Safety Software Technical Specification, |
|
1108 * Part 1: Concepts and Function Blocks, |
|
1109 * Version 1.0 – Official Release" |
|
1110 * written by PLCopen - Technical Committee 5 |
|
1111 * |
|
1112 * We only support these extensions and keywords |
|
1113 * if the apropriate command line option is given. |
|
1114 */ |
|
1115 SAFEBOOL {if (get_opt_safe_extensions()) {return SAFEBOOL;} else {REJECT;}} |
|
1116 |
|
1117 SAFEBYTE {if (get_opt_safe_extensions()) {return SAFEBYTE;} else {REJECT;}} |
|
1118 SAFEWORD {if (get_opt_safe_extensions()) {return SAFEWORD;} else {REJECT;}} |
|
1119 SAFEDWORD {if (get_opt_safe_extensions()) {return SAFEDWORD;} else{REJECT;}} |
|
1120 SAFELWORD {if (get_opt_safe_extensions()) {return SAFELWORD;} else{REJECT;}} |
|
1121 |
|
1122 SAFEREAL {if (get_opt_safe_extensions()) {return SAFESINT;} else{REJECT;}} |
|
1123 SAFELREAL {if (get_opt_safe_extensions()) {return SAFELREAL;} else{REJECT;}} |
|
1124 |
|
1125 SAFESINT {if (get_opt_safe_extensions()) {return SAFESINT;} else{REJECT;}} |
|
1126 SAFEINT {if (get_opt_safe_extensions()) {return SAFEINT;} else{REJECT;}} |
|
1127 SAFEDINT {if (get_opt_safe_extensions()) {return SAFEDINT;} else{REJECT;}} |
|
1128 SAFELINT {if (get_opt_safe_extensions()) {return SAFELINT;} else{REJECT;}} |
|
1129 |
|
1130 SAFEUSINT {if (get_opt_safe_extensions()) {return SAFEUSINT;} else{REJECT;}} |
|
1131 SAFEUINT {if (get_opt_safe_extensions()) {return SAFEUINT;} else{REJECT;}} |
|
1132 SAFEUDINT {if (get_opt_safe_extensions()) {return SAFEUDINT;} else{REJECT;}} |
|
1133 SAFEULINT {if (get_opt_safe_extensions()) {return SAFEULINT;} else{REJECT;}} |
|
1134 |
|
1135 /* SAFESTRING and SAFEWSTRING are not yet supported, i.e. checked correctly, in the semantic analyser (stage 3) */ |
|
1136 /* so it is best not to support them at all... */ |
|
1137 /* |
|
1138 SAFEWSTRING {if (get_opt_safe_extensions()) {return SAFEWSTRING;} else{REJECT;}} |
|
1139 SAFESTRING {if (get_opt_safe_extensions()) {return SAFESTRING;} else{REJECT;}} |
|
1140 */ |
|
1141 |
|
1142 SAFETIME {if (get_opt_safe_extensions()) {return SAFETIME;} else{REJECT;}} |
|
1143 SAFEDATE {if (get_opt_safe_extensions()) {return SAFEDATE;} else{REJECT;}} |
|
1144 SAFEDT {if (get_opt_safe_extensions()) {return SAFEDT;} else{REJECT;}} |
|
1145 SAFETOD {if (get_opt_safe_extensions()) {return SAFETOD;} else{REJECT;}} |
|
1146 SAFEDATE_AND_TIME {if (get_opt_safe_extensions()) {return SAFEDATE_AND_TIME;} else{REJECT;}} |
|
1147 SAFETIME_OF_DAY {if (get_opt_safe_extensions()) {return SAFETIME_OF_DAY;} else{REJECT;}} |
1072 |
1148 |
1073 /********************************/ |
1149 /********************************/ |
1074 /* B 1.3.2 - Generic data types */ |
1150 /* B 1.3.2 - Generic data types */ |
1075 /********************************/ |
1151 /********************************/ |
1076 /* Strangely, the following symbols do not seem to be required! */ |
1152 /* Strangely, the following symbols do not seem to be required! */ |
1103 |
1179 |
1104 |
1180 |
1105 /*********************/ |
1181 /*********************/ |
1106 /* B 1.4 - Variables */ |
1182 /* B 1.4 - Variables */ |
1107 /*********************/ |
1183 /*********************/ |
1108 REAL return REAL; /* Keyword (Data Type) */ |
|
1109 LREAL return LREAL; /* Keyword (Data Type) */ |
|
1110 |
|
1111 SINT return SINT; /* Keyword (Data Type) */ |
|
1112 INT return INT; /* Keyword (Data Type) */ |
|
1113 DINT return DINT; /* Keyword (Data Type) */ |
|
1114 LINT return LINT; /* Keyword (Data Type) */ |
|
1115 |
|
1116 USINT return USINT; /* Keyword (Data Type) */ |
|
1117 UINT return UINT; /* Keyword (Data Type) */ |
|
1118 UDINT return UDINT; /* Keyword (Data Type) */ |
|
1119 ULINT return ULINT; /* Keyword (Data Type) */ |
|
1120 |
|
1121 |
|
1122 WSTRING return WSTRING; /* Keyword (Data Type) */ |
|
1123 STRING return STRING; /* Keyword (Data Type) */ |
|
1124 BOOL return BOOL; /* Keyword (Data Type) */ |
|
1125 TIME return TIME; /* Keyword (Data Type) */ |
|
1126 DATE return DATE; /* Keyword (Data Type) */ |
|
1127 DT return DT; /* Keyword (Data Type) */ |
|
1128 TOD return TOD; /* Keyword (Data Type) */ |
|
1129 DATE_AND_TIME return DATE_AND_TIME; /* Keyword (Data Type) */ |
|
1130 TIME_OF_DAY return TIME_OF_DAY; /* Keyword (Data Type) */ |
|
1131 |
|
1132 |
1184 |
1133 /******************************************/ |
1185 /******************************************/ |
1134 /* B 1.4.3 - Declaration & Initialisation */ |
1186 /* B 1.4.3 - Declaration & Initialisation */ |
1135 /******************************************/ |
1187 /******************************************/ |
1136 VAR_INPUT return VAR_INPUT; /* Keyword */ |
1188 VAR_INPUT return VAR_INPUT; /* Keyword */ |
1386 END_REPEAT return END_REPEAT; /* Keyword */ |
1438 END_REPEAT return END_REPEAT; /* Keyword */ |
1387 |
1439 |
1388 EXIT return EXIT; /* Keyword */ |
1440 EXIT return EXIT; /* Keyword */ |
1389 |
1441 |
1390 |
1442 |
1391 /*****************************************************************/ |
1443 |
1392 /* Keywords defined in "Safety Software Technical Specification" */ |
|
1393 /*****************************************************************/ |
|
1394 /* |
|
1395 * NOTE: The following keywords are define in |
|
1396 * "Safety Software Technical Specification, |
|
1397 * Part 1: Concepts and Function Blocks, |
|
1398 * Version 1.0 – Official Release" |
|
1399 * written by PLCopen - Technical Committee 5 |
|
1400 * |
|
1401 * We only support these extensions and keywords |
|
1402 * if the apropriate command line option is given. |
|
1403 */ |
|
1404 SAFEBOOL {if (get_opt_safe_extensions()) {return SAFEBOOL;} else{REJECT;}} /* Keyword (Data Type) */ |
|
1405 |
1444 |
1406 |
1445 |
1407 |
1446 |
1408 /********************************************************/ |
1447 /********************************************************/ |
1409 /********************************************************/ |
1448 /********************************************************/ |