stage1_2/iec.flex
changeset 82 2b6e9eeeff2c
parent 81 de518eb7bc74
child 83 aeb7e0e53855
equal deleted inserted replaced
81:de518eb7bc74 82:2b6e9eeeff2c
  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 	/********************************************/
  1164 	.* as other identifiers that may be used as variable names inside IL and ST programs.
  1164 	.* as other identifiers that may be used as variable names inside IL and ST programs.
  1165 	 * They will have to be handled when we include parsing of SFC... For now, simply
  1165 	 * They will have to be handled when we include parsing of SFC... For now, simply
  1166 	 * ignore them!
  1166 	 * ignore them!
  1167 	 */
  1167 	 */
  1168 	 
  1168 	 
  1169 ACTION		return ACTION;
  1169 ACTION		return ACTION;			/* Keyword */
  1170 END_ACTION	return END_ACTION;
  1170 END_ACTION	return END_ACTION;		/* Keyword */
  1171 
  1171 
  1172 TRANSITION	return TRANSITION;
  1172 TRANSITION	return TRANSITION;		/* Keyword */
  1173 END_TRANSITION	return END_TRANSITION;
  1173 END_TRANSITION	return END_TRANSITION;		/* Keyword */
  1174 FROM		return FROM;
  1174 FROM		return FROM;			/* Keyword */
  1175 TO		return TO;
  1175 TO		return TO;			/* Keyword */
  1176 
  1176 
  1177 INITIAL_STEP	return INITIAL_STEP;
  1177 INITIAL_STEP	return INITIAL_STEP;		/* Keyword */
  1178 STEP		return STEP;
  1178 STEP		return STEP;			/* Keyword */
  1179 END_STEP	return END_STEP;
  1179 END_STEP	return END_STEP;		/* Keyword */
  1180 
  1180 
  1181 	/* PRIORITY is not a keyword, so we only return it when 
  1181 	/* PRIORITY is not a keyword, so we only return it when 
  1182 	 * it is explicitly required and we are not expecting any identifiers
  1182 	 * it is explicitly required and we are not expecting any identifiers
  1183 	 * that could also use the same letter sequence (i.e. an identifier: piority)
  1183 	 * that could also use the same letter sequence (i.e. an identifier: piority)
  1184 	 */
  1184 	 */
  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 	 */
  1253 	 *       different tokens for & and AND (and similarly
  1253 	 *       different tokens for & and AND (and similarly
  1254 	 *       ANDN and &N)!
  1254 	 *       ANDN and &N)!
  1255 	 */
  1255 	 */
  1256  /* The following tokens clash with ST expression operators and Standard Functions */
  1256  /* The following tokens clash with ST expression operators and Standard Functions */
  1257  /* They are also keywords! */
  1257  /* They are also keywords! */
  1258 AND		return AND;
  1258 AND		return AND;		/* Keyword */
  1259 MOD		return MOD;
  1259 MOD		return MOD;		/* Keyword */
  1260 OR		return OR;
  1260 OR		return OR;		/* Keyword */
  1261 XOR		return XOR;
  1261 XOR		return XOR;		/* Keyword */
  1262 NOT		return NOT;
  1262 NOT		return NOT;		/* Keyword */
  1263 
  1263 
  1264  /* The following tokens clash with Standard Functions */
  1264  /* The following tokens clash with Standard Functions */
       
  1265  /* They are keywords because they are a function name */
  1265 <il_state>{
  1266 <il_state>{
  1266 ADD		return ADD;
  1267 ADD		return ADD;		/* Keyword (Standard Function) */
  1267 DIV		return DIV;
  1268 DIV		return DIV;		/* Keyword (Standard Function) */
  1268 EQ		return EQ;
  1269 EQ		return EQ;		/* Keyword (Standard Function) */
  1269 GE		return GE;
  1270 GE		return GE;		/* Keyword (Standard Function) */
  1270 GT		return GT;
  1271 GT		return GT;		/* Keyword (Standard Function) */
  1271 LE		return LE;
  1272 LE		return LE;		/* Keyword (Standard Function) */
  1272 LT		return LT;
  1273 LT		return LT;		/* Keyword (Standard Function) */
  1273 MUL		return MUL;
  1274 MUL		return MUL;		/* Keyword (Standard Function) */
  1274 NE		return NE;
  1275 NE		return NE;		/* Keyword (Standard Function) */
  1275 SUB		return SUB;
  1276 SUB		return SUB;		/* Keyword (Standard Function) */
  1276 }
  1277 }
  1277 
  1278 
  1278  /* The following tokens clash with SFC action qualifiers */
  1279  /* The following tokens clash with SFC action qualifiers */
       
  1280  /* They are not keywords! */
  1279 <il_state>{
  1281 <il_state>{
  1280 S		return S;
  1282 S		return S;
  1281 R		return R;
  1283 R		return R;
  1282 }
  1284 }
  1283 
  1285 
  1284  /* The following tokens clash with ST expression operators */
  1286  /* The following tokens clash with ST expression operators */
  1285 &		return AND2;
  1287 &		return AND2;		/* NOT a Delimiter! */
  1286 
  1288 
  1287  /* The following tokens have no clashes */
  1289  /* The following tokens have no clashes */
       
  1290  /* They are not keywords! */
  1288 <il_state>{
  1291 <il_state>{
  1289 LD		return LD;
  1292 LD		return LD;
  1290 LDN		return LDN;
  1293 LDN		return LDN;
  1291 ST		return ST;
  1294 ST		return ST;
  1292 STN		return STN;
  1295 STN		return STN;
  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