stage1_2/iec.flex
changeset 257 90782e241346
parent 177 697562a5da7c
child 264 6facabd9c2cd
equal deleted inserted replaced
204:8ffa211b7f9a 257:90782e241346
  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 	/********************************************************/