1007 /******************************************************/ |
1007 /******************************************************/ |
1008 /******************************************************/ |
1008 /******************************************************/ |
1009 /******************************************************/ |
1009 /******************************************************/ |
1010 |
1010 |
1011 |
1011 |
1012 EN return EN; |
1012 EN return EN; /* Keyword */ |
1013 ENO return ENO; |
1013 ENO return ENO; /* Keyword */ |
1014 |
1014 |
1015 |
1015 |
1016 /******************************/ |
1016 /******************************/ |
1017 /* B 1.2.1 - Numeric Literals */ |
1017 /* B 1.2.1 - Numeric Literals */ |
1018 /******************************/ |
1018 /******************************/ |
1019 TRUE return TRUE; |
1019 TRUE return TRUE; /* Keyword */ |
1020 BOOL#1 return TRUE; |
1020 BOOL#1 return TRUE; /* Keyword (Data Type) + Delimiter */ |
1021 BOOL#TRUE return TRUE; |
1021 BOOL#TRUE return TRUE; /* Keyword (Data Type) + Delimiter + Keyword */ |
1022 FALSE return FALSE; |
1022 FALSE return FALSE; /* Keyword */ |
1023 BOOL#0 return FALSE; |
1023 BOOL#0 return FALSE; /* Keyword (Data Type) + Delimiter */ |
1024 BOOL#FALSE return FALSE; |
1024 BOOL#FALSE return FALSE; /* Keyword (Data Type) + Delimiter + Keyword */ |
1025 |
1025 |
1026 |
1026 |
1027 /************************/ |
1027 /************************/ |
1028 /* B 1.2.3.1 - Duration */ |
1028 /* B 1.2.3.1 - Duration */ |
1029 /************************/ |
1029 /************************/ |
1030 t# return T_SHARP; |
1030 t# return T_SHARP; /* Delimiter */ |
1031 T# return T_SHARP; |
1031 T# return T_SHARP; /* Delimiter */ |
1032 TIME return TIME; |
1032 TIME return TIME; /* Keyword (Data Type) */ |
1033 |
1033 |
1034 |
1034 |
1035 /************************************/ |
1035 /************************************/ |
1036 /* B 1.2.3.2 - Time of day and Date */ |
1036 /* B 1.2.3.2 - Time of day and Date */ |
1037 /************************************/ |
1037 /************************************/ |
1038 TIME_OF_DAY return TIME_OF_DAY; |
1038 TIME_OF_DAY return TIME_OF_DAY; /* Keyword (Data Type) */ |
1039 TOD return TIME_OF_DAY; |
1039 TOD return TIME_OF_DAY; /* Keyword (Data Type) */ |
1040 DATE return DATE; |
1040 DATE return DATE; /* Keyword (Data Type) */ |
1041 d# return D_SHARP; |
1041 d# return D_SHARP; /* Delimiter */ |
1042 D# return D_SHARP; |
1042 D# return D_SHARP; /* Delimiter */ |
1043 DATE_AND_TIME return DATE_AND_TIME; |
1043 DATE_AND_TIME return DATE_AND_TIME; /* Keyword (Data Type) */ |
1044 DT return DATE_AND_TIME; |
1044 DT return DATE_AND_TIME; /* Keyword (Data Type) */ |
1045 |
1045 |
1046 |
1046 |
1047 /***********************************/ |
1047 /***********************************/ |
1048 /* B 1.3.1 - Elementary Data Types */ |
1048 /* B 1.3.1 - Elementary Data Types */ |
1049 /***********************************/ |
1049 /***********************************/ |
1050 BYTE return BYTE; |
1050 BYTE return BYTE; /* Keyword (Data Type) */ |
1051 WORD return WORD; |
1051 WORD return WORD; /* Keyword (Data Type) */ |
1052 DWORD return DWORD; |
1052 DWORD return DWORD; /* Keyword (Data Type) */ |
1053 LWORD return LWORD; |
1053 LWORD return LWORD; /* Keyword (Data Type) */ |
1054 |
1054 |
1055 |
1055 |
1056 /********************************/ |
1056 /********************************/ |
1057 /* B 1.3.2 - Generic data types */ |
1057 /* B 1.3.2 - Generic data types */ |
1058 /********************************/ |
1058 /********************************/ |
1059 /* Strangely, the following symbols do not seem to be required! */ |
1059 /* Strangely, the following symbols do not seem to be required! */ |
1060 /* But we include them so they become reserved words, and do not |
1060 /* But we include them so they become reserved words, and do not |
1061 * get passed up to bison as an identifier... |
1061 * get passed up to bison as an identifier... |
1062 */ |
1062 */ |
1063 ANY return ANY; |
1063 ANY return ANY; /* Keyword (Data Type) */ |
1064 ANY_DERIVED return ANY_DERIVED; |
1064 ANY_DERIVED return ANY_DERIVED; /* Keyword (Data Type) */ |
1065 ANY_ELEMENTARY return ANY_ELEMENTARY; |
1065 ANY_ELEMENTARY return ANY_ELEMENTARY; /* Keyword (Data Type) */ |
1066 ANY_MAGNITUDE return ANY_MAGNITUDE; |
1066 ANY_MAGNITUDE return ANY_MAGNITUDE; /* Keyword (Data Type) */ |
1067 ANY_NUM return ANY_NUM; |
1067 ANY_NUM return ANY_NUM; /* Keyword (Data Type) */ |
1068 ANY_REAL return ANY_REAL; |
1068 ANY_REAL return ANY_REAL; /* Keyword (Data Type) */ |
1069 ANY_INT return ANY_INT; |
1069 ANY_INT return ANY_INT; /* Keyword (Data Type) */ |
1070 ANY_BIT return ANY_BIT; |
1070 ANY_BIT return ANY_BIT; /* Keyword (Data Type) */ |
1071 ANY_STRING return ANY_STRING; |
1071 ANY_STRING return ANY_STRING; /* Keyword (Data Type) */ |
1072 ANY_DATE return ANY_DATE; |
1072 ANY_DATE return ANY_DATE; /* Keyword (Data Type) */ |
1073 |
1073 |
1074 |
1074 |
1075 /********************************/ |
1075 /********************************/ |
1076 /* B 1.3.3 - Derived data types */ |
1076 /* B 1.3.3 - Derived data types */ |
1077 /********************************/ |
1077 /********************************/ |
1078 ":=" return ASSIGN; |
1078 ":=" return ASSIGN; /* Delimiter */ |
1079 ".." return DOTDOT; |
1079 ".." return DOTDOT; /* Delimiter */ |
1080 TYPE return TYPE; |
1080 TYPE return TYPE; /* Keyword */ |
1081 END_TYPE return END_TYPE; |
1081 END_TYPE return END_TYPE; /* Keyword */ |
1082 ARRAY return ARRAY; |
1082 ARRAY return ARRAY; /* Keyword */ |
1083 OF return OF; |
1083 OF return OF; /* Keyword */ |
1084 STRUCT return STRUCT; |
1084 STRUCT return STRUCT; /* Keyword */ |
1085 END_STRUCT return END_STRUCT; |
1085 END_STRUCT return END_STRUCT; /* Keyword */ |
1086 |
1086 |
1087 |
1087 |
1088 /*********************/ |
1088 /*********************/ |
1089 /* B 1.4 - Variables */ |
1089 /* B 1.4 - Variables */ |
1090 /*********************/ |
1090 /*********************/ |
1091 REAL return REAL; |
1091 REAL return REAL; /* Keyword (Data Type) */ |
1092 LREAL return LREAL; |
1092 LREAL return LREAL; /* Keyword (Data Type) */ |
1093 |
1093 |
1094 SINT return SINT; |
1094 SINT return SINT; /* Keyword (Data Type) */ |
1095 INT return INT; |
1095 INT return INT; /* Keyword (Data Type) */ |
1096 DINT return DINT; |
1096 DINT return DINT; /* Keyword (Data Type) */ |
1097 LINT return LINT; |
1097 LINT return LINT; /* Keyword (Data Type) */ |
1098 |
1098 |
1099 USINT return USINT; |
1099 USINT return USINT; /* Keyword (Data Type) */ |
1100 UINT return UINT; |
1100 UINT return UINT; /* Keyword (Data Type) */ |
1101 UDINT return UDINT; |
1101 UDINT return UDINT; /* Keyword (Data Type) */ |
1102 ULINT return ULINT; |
1102 ULINT return ULINT; /* Keyword (Data Type) */ |
1103 |
1103 |
1104 |
1104 |
1105 WSTRING return WSTRING; |
1105 WSTRING return WSTRING; /* Keyword (Data Type) */ |
1106 STRING return STRING; |
1106 STRING return STRING; /* Keyword (Data Type) */ |
1107 BOOL return BOOL; |
1107 BOOL return BOOL; /* Keyword (Data Type) */ |
1108 |
1108 |
1109 TIME return TIME; |
1109 TIME return TIME; /* Keyword (Data Type) */ |
1110 DATE return DATE; |
1110 DATE return DATE; /* Keyword (Data Type) */ |
1111 DT return DT; |
1111 DT return DT; /* Keyword (Data Type) */ |
1112 TOD return TOD; |
1112 TOD return TOD; /* Keyword (Data Type) */ |
1113 DATE_AND_TIME return DATE_AND_TIME; |
1113 DATE_AND_TIME return DATE_AND_TIME; /* Keyword (Data Type) */ |
1114 TIME_OF_DAY return TIME_OF_DAY; |
1114 TIME_OF_DAY return TIME_OF_DAY; /* Keyword (Data Type) */ |
1115 |
1115 |
1116 |
1116 |
1117 /******************************************/ |
1117 /******************************************/ |
1118 /* B 1.4.3 - Declaration & Initialisation */ |
1118 /* B 1.4.3 - Declaration & Initialisation */ |
1119 /******************************************/ |
1119 /******************************************/ |
1120 VAR_INPUT return VAR_INPUT; |
1120 VAR_INPUT return VAR_INPUT; /* Keyword */ |
1121 VAR_OUTPUT return VAR_OUTPUT; |
1121 VAR_OUTPUT return VAR_OUTPUT; /* Keyword */ |
1122 VAR_IN_OUT return VAR_IN_OUT; |
1122 VAR_IN_OUT return VAR_IN_OUT; /* Keyword */ |
1123 VAR_EXTERNAL return VAR_EXTERNAL; |
1123 VAR_EXTERNAL return VAR_EXTERNAL; /* Keyword */ |
1124 VAR_GLOBAL return VAR_GLOBAL; |
1124 VAR_GLOBAL return VAR_GLOBAL; /* Keyword */ |
1125 END_VAR return END_VAR; |
1125 END_VAR return END_VAR; /* Keyword */ |
1126 RETAIN return RETAIN; |
1126 RETAIN return RETAIN; /* Keyword */ |
1127 NON_RETAIN return NON_RETAIN; |
1127 NON_RETAIN return NON_RETAIN; /* Keyword */ |
1128 R_EDGE return R_EDGE; |
1128 R_EDGE return R_EDGE; /* Keyword */ |
1129 F_EDGE return F_EDGE; |
1129 F_EDGE return F_EDGE; /* Keyword */ |
1130 AT return AT; |
1130 AT return AT; /* Keyword */ |
1131 |
1131 |
1132 |
1132 |
1133 /***********************/ |
1133 /***********************/ |
1134 /* B 1.5.1 - Functions */ |
1134 /* B 1.5.1 - Functions */ |
1135 /***********************/ |
1135 /***********************/ |
1136 FUNCTION return FUNCTION; |
1136 FUNCTION return FUNCTION; /* Keyword */ |
1137 END_FUNCTION return END_FUNCTION; |
1137 END_FUNCTION return END_FUNCTION; /* Keyword */ |
1138 VAR return VAR; |
1138 VAR return VAR; /* Keyword */ |
1139 CONSTANT return CONSTANT; |
1139 CONSTANT return CONSTANT; /* Keyword */ |
1140 |
1140 |
1141 |
1141 |
1142 /*****************************/ |
1142 /*****************************/ |
1143 /* B 1.5.2 - Function Blocks */ |
1143 /* B 1.5.2 - Function Blocks */ |
1144 /*****************************/ |
1144 /*****************************/ |
1145 FUNCTION_BLOCK return FUNCTION_BLOCK; |
1145 FUNCTION_BLOCK return FUNCTION_BLOCK; /* Keyword */ |
1146 END_FUNCTION_BLOCK return END_FUNCTION_BLOCK; |
1146 END_FUNCTION_BLOCK return END_FUNCTION_BLOCK; /* Keyword */ |
1147 VAR_TEMP return VAR_TEMP; |
1147 VAR_TEMP return VAR_TEMP; /* Keyword */ |
1148 VAR return VAR; |
1148 VAR return VAR; /* Keyword */ |
1149 NON_RETAIN return NON_RETAIN; |
1149 NON_RETAIN return NON_RETAIN; /* Keyword */ |
1150 END_VAR return END_VAR; |
1150 END_VAR return END_VAR; /* Keyword */ |
1151 |
1151 |
1152 |
1152 |
1153 /**********************/ |
1153 /**********************/ |
1154 /* B 1.5.3 - Programs */ |
1154 /* B 1.5.3 - Programs */ |
1155 /**********************/ |
1155 /**********************/ |
1156 PROGRAM return PROGRAM; |
1156 PROGRAM return PROGRAM; /* Keyword */ |
1157 END_PROGRAM return END_PROGRAM; |
1157 END_PROGRAM return END_PROGRAM; /* Keyword */ |
1158 |
1158 |
1159 |
1159 |
1160 /********************************************/ |
1160 /********************************************/ |
1161 /* B 1.6 Sequential Function Chart elements */ |
1161 /* B 1.6 Sequential Function Chart elements */ |
1162 /********************************************/ |
1162 /********************************************/ |
1200 |
1200 |
1201 |
1201 |
1202 /********************************/ |
1202 /********************************/ |
1203 /* B 1.7 Configuration elements */ |
1203 /* B 1.7 Configuration elements */ |
1204 /********************************/ |
1204 /********************************/ |
1205 CONFIGURATION return CONFIGURATION; |
1205 CONFIGURATION return CONFIGURATION; /* Keyword */ |
1206 END_CONFIGURATION return END_CONFIGURATION; |
1206 END_CONFIGURATION return END_CONFIGURATION; /* Keyword */ |
1207 TASK return TASK; |
1207 TASK return TASK; /* Keyword */ |
1208 RESOURCE return RESOURCE; |
1208 RESOURCE return RESOURCE; /* Keyword */ |
1209 ON return ON; |
1209 ON return ON; /* Keyword */ |
1210 END_RESOURCE return END_RESOURCE; |
1210 END_RESOURCE return END_RESOURCE; /* Keyword */ |
1211 VAR_CONFIG return VAR_CONFIG; |
1211 VAR_CONFIG return VAR_CONFIG; /* Keyword */ |
1212 VAR_ACCESS return VAR_ACCESS; |
1212 VAR_ACCESS return VAR_ACCESS; /* Keyword */ |
1213 END_VAR return END_VAR; |
1213 END_VAR return END_VAR; /* Keyword */ |
1214 WITH return WITH; |
1214 WITH return WITH; /* Keyword */ |
1215 PROGRAM return PROGRAM; |
1215 PROGRAM return PROGRAM; /* Keyword */ |
1216 RETAIN return RETAIN; |
1216 RETAIN return RETAIN; /* Keyword */ |
1217 NON_RETAIN return NON_RETAIN; |
1217 NON_RETAIN return NON_RETAIN; /* Keyword */ |
1218 READ_WRITE return READ_WRITE; |
1218 READ_WRITE return READ_WRITE; /* Keyword */ |
1219 READ_ONLY return READ_ONLY; |
1219 READ_ONLY return READ_ONLY; /* Keyword */ |
1220 |
1220 |
1221 /* PRIORITY, SINGLE and INTERVAL are not a keywords, so we only return them when |
1221 /* PRIORITY, SINGLE and INTERVAL are not a keywords, so we only return them when |
1222 * it is explicitly required and we are not expecting any identifiers |
1222 * it is explicitly required and we are not expecting any identifiers |
1223 * that could also use the same letter sequence (i.e. an identifier: piority, ...) |
1223 * that could also use the same letter sequence (i.e. an identifier: piority, ...) |
1224 */ |
1224 */ |
1314 } |
1317 } |
1315 |
1318 |
1316 /***********************/ |
1319 /***********************/ |
1317 /* B 3.1 - Expressions */ |
1320 /* B 3.1 - Expressions */ |
1318 /***********************/ |
1321 /***********************/ |
1319 "**" return OPER_EXP; |
1322 "**" return OPER_EXP; /* NOT a Delimiter! */ |
1320 "<>" return OPER_NE; |
1323 "<>" return OPER_NE; /* NOT a Delimiter! */ |
1321 ">=" return OPER_GE; |
1324 ">=" return OPER_GE; /* NOT a Delimiter! */ |
1322 "<=" return OPER_LE; |
1325 "<=" return OPER_LE; /* NOT a Delimiter! */ |
1323 AND return AND; |
1326 & return AND2; /* NOT a Delimiter! */ |
1324 XOR return XOR; |
1327 AND return AND; /* Keyword */ |
1325 OR return OR; |
1328 XOR return XOR; /* Keyword */ |
1326 NOT return NOT; |
1329 OR return OR; /* Keyword */ |
1327 MOD return MOD; |
1330 NOT return NOT; /* Keyword */ |
|
1331 MOD return MOD; /* Keyword */ |
1328 |
1332 |
1329 |
1333 |
1330 /*****************************************/ |
1334 /*****************************************/ |
1331 /* B 3.2.2 Subprogram Control Statements */ |
1335 /* B 3.2.2 Subprogram Control Statements */ |
1332 /*****************************************/ |
1336 /*****************************************/ |
1333 := return ASSIGN; |
1337 := return ASSIGN; /* Delimiter */ |
1334 => return SENDTO; |
1338 => return SENDTO; /* Delimiter */ |
1335 RETURN return RETURN; |
1339 RETURN return RETURN; /* Keyword */ |
1336 |
1340 |
1337 |
1341 |
1338 /********************************/ |
1342 /********************************/ |
1339 /* B 3.2.3 Selection Statements */ |
1343 /* B 3.2.3 Selection Statements */ |
1340 /********************************/ |
1344 /********************************/ |
1341 IF return IF; |
1345 IF return IF; /* Keyword */ |
1342 THEN return THEN; |
1346 THEN return THEN; /* Keyword */ |
1343 ELSIF return ELSIF; |
1347 ELSIF return ELSIF; /* Keyword */ |
1344 ELSE return ELSE; |
1348 ELSE return ELSE; /* Keyword */ |
1345 END_IF return END_IF; |
1349 END_IF return END_IF; /* Keyword */ |
1346 |
1350 |
1347 CASE return CASE; |
1351 CASE return CASE; /* Keyword */ |
1348 OF return OF; |
1352 OF return OF; /* Keyword */ |
1349 ELSE return ELSE; |
1353 ELSE return ELSE; /* Keyword */ |
1350 END_CASE return END_CASE; |
1354 END_CASE return END_CASE; /* Keyword */ |
1351 |
1355 |
1352 |
1356 |
1353 /********************************/ |
1357 /********************************/ |
1354 /* B 3.2.4 Iteration Statements */ |
1358 /* B 3.2.4 Iteration Statements */ |
1355 /********************************/ |
1359 /********************************/ |
1356 FOR return FOR; |
1360 FOR return FOR; /* Keyword */ |
1357 TO return TO; |
1361 TO return TO; /* Keyword */ |
1358 BY return BY; |
1362 BY return BY; /* Keyword */ |
1359 DO return DO; |
1363 DO return DO; /* Keyword */ |
1360 END_FOR return END_FOR; |
1364 END_FOR return END_FOR; /* Keyword */ |
1361 |
1365 |
1362 WHILE return WHILE; |
1366 WHILE return WHILE; /* Keyword */ |
1363 DO return DO; |
1367 DO return DO; /* Keyword */ |
1364 END_WHILE return END_WHILE; |
1368 END_WHILE return END_WHILE; /* Keyword */ |
1365 |
1369 |
1366 REPEAT return REPEAT; |
1370 REPEAT return REPEAT; /* Keyword */ |
1367 UNTIL return UNTIL; |
1371 UNTIL return UNTIL; /* Keyword */ |
1368 END_REPEAT return END_REPEAT; |
1372 END_REPEAT return END_REPEAT; /* Keyword */ |
1369 |
1373 |
1370 EXIT return EXIT; |
1374 EXIT return EXIT; /* Keyword */ |
1371 |
1375 |
1372 |
1376 |
1373 |
1377 |
1374 |
1378 |
1375 |
1379 |