(0)	module validator
(0)		version = 'v1.0'
(0)		names = case_sensitive
(0)	procedure
(0)		ArmMe ();
(0)		DisarmMe ();
(0)		ActivateMe ();
(0)		ExecuteMe ();
(0)		CreationProc ();
(0)	!
(0)	!test for P2869
(0)	!  this test needs to be at the beginning of this file
(0)	!  because it results in memory corruption, and if at
(0)	!  the end, the corruption might not produce the desired
(0)	!  core dump.
(0)	!
(0)	value  toggle_icon_Y     : imported icon;
(0)	value  toggle_icon_N     : imported icon;
(0)	object
(0)	Gbutton1    : XmToggleButton {
(0)	      arguments {
(0)	         XmNlabelType = XmPIXMAP;
(0)	         XmNselectPixmap = toggle_icon_Y;
(0)	         XmNlabelPixmap = toggle_icon_N;
(0)	         XmNindicatorOn = false;
(0)	!        XmNlabelString = "";
(0)	      };
(0)	   };
(0)	object
(0)	Gbutton2 : XmToggleButton {
(0)	      arguments {
(0)	         XmNlabelType = XmPIXMAP;
(0)	         XmNselectPixmap = toggle_icon_Y;
(0)	         XmNlabelPixmap = toggle_icon_N;
(0)	         XmNindicatorOn = false;
(0)	!        XmNlabelString = "";
(0)	      };
(0)	   };
(0)	object
(0)	Gbutton3 : XmToggleButton {
(0)	      arguments {
(0)	         XmNlabelType = XmPIXMAP;
(0)	         XmNselectPixmap = toggle_icon_Y;
(0)	         XmNlabelPixmap = toggle_icon_N;
(0)	         XmNindicatorOn = false;
(0)	!        XmNlabelString = "";
(0)	      };
(0)	   };
(0)	!
(0)	!comment tests
(0)	!
(0)	!	valid
(0)	/*	comment should be allowed */
(0)	/*	there are many of these
(0)		comments which can span multiple lines */
(0)	!	this also, as we've seen!
(0)	!
(0)	!	invalid		
(0)	!
(0)	/*	nested /* comments */ are out */
		  	                          1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)	;
(0)	!	semi colon above just to break out of error
(0)	!	this type of comment
(0)		cannot span multiple lines
			       1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)	;
(0)	!	semi colon above just to break out of error
(0)	!
(0)	!value tests
(0)	!
(0)	value
(0)	!	valid name	value unimportant
(0)		abd_ef		:	0;
(0)		$dext		:	1;
(0)		low1$2		:	0;
(0)		MARKa		:	1;
(0)		_peg		:	0;
(0)		conTROLS	:	1;
(0)	!
(0)	!	invalid name
(0)		9zhe		:	1;
			1
Error:  (1) unexpected UNS_INT_LITERAL token seen - parsing resumes after ";"

(0)		blha)t		:	0;
			1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)		m-fg		:	1;
			1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)		END		:	0;
			1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)		MODULE		:	1;
			1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)	value
(0)	!integer values		valid
(0)	!
(0)		foo1		:	0;
(0)		foo2		:	-942343;
(0)		foo3		:	2147483647;
(0)	!
(0)	!
(0)	!			invalid
(0)		foo4		:	2147483648;
			    		 	1
Error:  (1) value of integer is out of range  

(0)		foo5		:	9 0;
			    		 	  1
Error:  (1) unexpected UNS_INT_LITERAL token seen - parsing resumes after ";"

(0)		foo6		:	-2,234;
			    		 	  1
Error:  (1) unexpected COMMA token seen - parsing resumes after ";"

(0)	value
(0)	!strings		valid
(0)		bar1		:	'1234a';
(0)		bar2		:	'	    ';
(0)		bar3		:	'/f';
(0)		bar4		:	'two \
(0)					lines';
(0)	!			invalid
(0)		bar5		:	'xyz;
			    		 	    1
Error:  (1) character string not terminated before end of line

(0)		bar6		:		;
			    		1
Error:  (1) unexpected COLON token seen - parsing resumes after ";"

(0)		bar7		:	94';
			    		 	   1
Error:  (1) character string not terminated before end of line

(0)	!	next one to break out of error above
(0)		bar7a		:	;
			1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)		bar8		:	'\389';
			    		 	     12
Error:  (1) \digit...\ sequence not terminated with \
Error:  (2) character string not terminated before end of line

(0)	value
		1
Error:  (1) unexpected VALUE token seen - parsing resumes after ";"

(0)	!booleans		valid
(0)		bool1		:	true;
(0)		bool2		:	false;
(0)		bool3		:	on;
(0)		bool4		:	off;
(0)	!			invalid
(0)		bool5		:	yes;
			     		 	1  2
Error:  (1) value yes was never defined
Error:  (2) the bool5 value is circularly defined

(0)		bool6		:	no;
			     		 	1 2
Error:  (1) value no was never defined
Error:  (2) the bool6 value is circularly defined

(0)	!
(0)	value
(0)	!float			valid
(0)		frizz1		:	1.0;
(0)		frizz2		:	.1;
(0)		frizz3		:	3.1415E-2;
(0)		frizz3a		:	-6.2e7;
(0)	!			invalid
(0)		frizz4		:	1e1;
			      		 	 1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)		frizz5		:	E-1;
			      		 	1  2
Error:  (1) value E was never defined
Error:  (2) the frizz5 value is circularly defined

(0)		frizz6		:	2.87 e6;
			      		 	     1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)	!	32-bit floats will fail
(0)		frizz7a		:	2.0e38;
(0)	!	64-bit floats will fail
(0)		frizz7b		:	1.8308E308;
(0)	!	should fail on most machines; maybe not mips machines
(0)		frizz7		:	2.0e2000;
(0)	value
(0)	!unary expressions		valid
(0)		lala1		:	~true;
(0)		lala2		:	~7;
(0)		lala3		:	-2.73e7;
(0)		lala4		:	--3829;
(0)		lala5		:	-lala4;
(0)	!			invalid
(0)		lala6		:	~3.1427;
			     		 	1
Error:  (1) float type is not valid for not operator

(0)		lala7		:	2~23;
			     		 	 1
Error:  (1) unexpected NOT token seen - parsing resumes after ";"

(0)		lala8		:	-false;
			     		 	 1
Error:  (1) boolean type is not valid for unary minus operator

(0)		lala9		:	-'bar';
			     		 	1
Error:  (1) string type is not valid for unary minus operator

(0)		lala10		:	+true;
			      		 	 1
Error:  (1) boolean type is not valid for unary plus operator

(0)	value
(0)	! binary		valid
(0)		zpp1		:	2*9.00004e4;
(0)		zpp2		:	0*1;
(0)		zpp3		:	8.7/-2.1E14;
(0)		zpp4		:	2.1/8;
(0)		zpp5		:	211+-317;
(0)		zpp6		:	1111 - 2.7e17;
(0)	!			invalid
(0)		zpp7		:	6 * true;
			    		 	    1
Error:  (1) boolean type is not valid for multiply operator

(0)		zpp8		:	*2, 3;
			    		 	1
Error:  (1) unexpected MULTIPLY token seen - parsing resumes after ";"

(0)		zpp9		:	*8.7;
			    		 	1
Error:  (1) unexpected MULTIPLY token seen - parsing resumes after ";"

(0)		zpp10		:	17/'string2';
			     		 	  1
Error:  (1) string type is not valid for divide operator

(0)		zpp11		:	3111/;
			     		 	     1
Error:  (1) unexpected SEMICOLON token seen - parsing resumes after ";"

(0)		zpp12		:	7 + off;
			     		 	    1
Error:  (1) boolean type is not valid for add operator

(0)		zpp13		:	3.184 + ;
			     		 	        1
Error:  (1) unexpected SEMICOLON token seen - parsing resumes after ";"

(0)	! test for PIR 2812, very long names
(0)	ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffoo 
Error:  (0) line truncated at 132 characters

(0)	: 7442;
(0)	! even a comment can do it ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Error:  (0) line truncated at 132 characters

(0)	ffffffffffffffffffffffffoo : 7442;
(0)	! end of test for PIR 2812
(0)	! test for PIR 2580, very long C-style comment
(0)	/******************************************************************************
(0)	*******************************************************************************
(0)	*******************************************************************************
(0)	*******************************************************************************
(0)	*******************************************************************************
(0)	*******************************************************************************
(0)	******************************************************************************/
(0)	!
(0)	!conversion tests
(0)	!
(0)	value
(0)	!data type conversions using values defined above
(0)	!			valid
(0)		frim1		:	integer(bool2);
(0)		frim2		:	float(abd_ef);
(0)		frim3		:	float(frizz2);
(0)	!			invalid
(0)		frim4		:	integer(bar1);
			     		 	             1
Error:  (1) cannot convert string type to integer type

(0)		frim5		:	float(bar1);
			     		 	           1
Error:  (1) cannot convert string type to float type

(0)	!
(0)	!end of value tests
(0)	!
(0)	!
(0)	!function tests
(0)	!
(0)	value color_blue	:	color ('mediumblue');
(0)	value color_red		:	color ('indian red');
(0)	value circle_radius	:	argument ( 'my_radius', integer);
(0)	value circle_color	:	argument ( 'my_color', color);
(0)	!
(0)	!
(0)	value color_black : color ('black', background);
(0)	! the next two definitions will generate warnings about overriding built-ins
(0)	value XmNactivateCallback : reason ( 'XmCR_ACTIVATE');
		      1
Warning:  (1) overriding built-in name XmNactivateCallback

(0)	value XmNarmCallback : reason (' XmCR_ARM');
		      1
Warning:  (1) overriding built-in name XmNarmCallback

(0)	object pushbutton1 : XmPushButton
(0)		{	arguments  {XmNforeground = color ('flamingo', foreground);
(0)	      			    XmNbackground = color_black;
(0)				    XmNlabelString = compound_string
(0)					 (#iso_latin2"string");
(0)				    };
(0)			callbacks	{XmNarmCallback = procedure ArmMe ();
(0)					 XmNactivateCallback = procedure ActivateMe ();
(0)		!execute is not a valid reason for PushButton SHOULD produce error
(0)					 XmNexecuteCallback = procedure ExecuteMe ();
						 1
Error:  (1) value XmNexecuteCallback was never defined

(0)					};
(0)		};
(0)	!
(0)	!color table test
(0)	!
(0)	value ct_1 : color_table
(0)			( color_black = '.' , color_red = 'o');
(0)	!invalid color tables
(0)	value ct_2 : color_table
(0)			( color_black = 'xx', color_red = 'o');
				                1
Error:  (1) color letter string must be a single character

(0)	value ct_3 : color_table
(0)			(color_teal = '!', color_azure = '?');
				 1                 2
Error:  (1) color entry color_teal must be defined before this reference
Error:  (2) color entry color_azure must be defined before this reference

(0)	value ct_4 : color_table
(0)			(background = 'm', foreground = 'o');
				 1                 2
Error:  (1) color entry background must be defined before this reference
Error:  (2) color entry foreground must be defined before this reference

(0)	!
(0)	!invalid if case_insensitive
(0)	value ct_5 : color_table
(0)			(color_black = 'r', color_blue = 'R');
(0)	!
(0)	!icon functions
(0)	!
(0)	!	invalid
(0)	value
(0)	icon_1 : icon	(color_table = ct_1,
(0)			 '....oooo',
(0)			 '.....ooo',
(0)			 '......ooo',
				 1
Error:  (1) row 3 must have same width as row 1

(0)			 '.......o',
(0)			 '........');
(0)	!	valid
(0)	icon_2 : icon (color_table = ct_1,
(0)			'');
(0)	value icon_3 : xbitmapfile ('gnu.xbm');
(0)	!
(0)	!font functions and tables
(0)	!
(0)	!	valid
(0)	!
(0)	value isolatin6 : font ('isolatin6');
(0)	value helvetica50 : font ('helvetica50');
(0)	!	invalid due to use of unknown value caramba
(0)	fonttable1 : font_table
(0)		(iso_latin6=isolatin6,
(0)		 iso_latin7=caramba);
			            1      2
Error:  (1) font entry caramba must be defined before this reference
Error:  (1) found any value when expecting font value
Error:  (2) found ** error ** value when expecting string value

(0)	!
(0)	!string tables
(0)	!
(0)	! valid example from documentation
(0)	object file_privileges :
(0)		XmList
(0)		{ arguments	
(0)			{ XmNitems = string_table ('owner read',
(0)						'owner write',
(0)						'group read',
(0)						'group write',
(0)						'other read',
(0)						'other write');
(0)			};
(0)		};
(0)	!	invalid 
(0)	value sticky_dessert : compound_string (#iso_greek"baklava");
(0)	object	dessert_tray :
(0)		XmList
(0)		{ arguments	
(0)			{ XmNitems = string_table ( sticky_dessert,
(0)						 'wrong punctuation,
							                   1
Error:  (1) character string not terminated before end of line

(0)						 'cheesecake');
(0)			};
(0)		};
(0)	!
(0)	!translation tables
(0)	!
(0)	!	valid from doc with mods
(0)	object new_translations :
(0)		XmPushButton
(0)		{
(0)		arguments
(0)		{ XmNtranslations = translation_table
(0)			(
(0)			'<Btn1Down>: XmPBArm()',
(0)			'<Btn1Up>  : XmPBActivate()',
(0)			'<Btn3Up>  : XmPBDisarm()'
(0)			);
(0)		};
(0)		};
(0)	!
(0)	!more compound string tests
(0)	!
(0)	!	valid tests
(0)	value 	bizz1	:	'zoo';
(0)		bizz2	:	'keeper';
(0)		bizz3	:	bizz1 & bizz2;
(0)		bizz4	:	#iso_greek"salt";
(0)		bizz5	:	compound_string (#iso_latin6"lick");
(0)		bizz6	:	bizz4 & bizz5;
(0)		bizz7	:	bizz1 & bizz4;
(0)		bizz8	:	compound_string (#iso_arabic"retaw\n");
(0)		bizz9	:	bizz4 & bizz8;
(0)		bizz10	:	#iso_latin8_lr"peter";
(0)		bizz11	:	bizz4 & bizz10;
(0)		bizz12	:	bizz10 & bizz8;
(0)	!	the following definition will issue an error
(0)	!	because bizz13 is subsequently referenced (in defining foop1)	
(0)		bizz13	:	exported compound_string (#iso_greek"secret");
			      	 	                                             1
Error:  (1) value used in this context must be private

(0)		bizz14	:	'bearer';
(0)	value	
(0)		foop1	:	bizz13 & bizz9;
(0)	!
(0)	!	invalid test
(0)				!not a legal character set
(0)		foop3	:	compound_string(#notacharset"works");
			     	 	                 1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)	!
(0)	!       BEGIN MOTIF ERRORS TESTS
(0)	!
(0)	!
(0)	! Invalid Motif resources test
(0)	!
(0)	object  myWidget:  XmPushButton
(0)		{ arguments	{ XmNbogusResource1 = 1;
			           	  1
Error:  (1) value XmNbogusResource1 was never defined

(0)				  XmNbogusResource2 = 'string';
					  1
Error:  (1) value XmNbogusResource2 was never defined

(0)			          XmNbogusResource3 = compound_string ('why');
				          1
Error:  (1) value XmNbogusResource3 was never defined

(0)				  XmNbogusResource4 = (6 * 5);
					  1
Error:  (1) value XmNbogusResource4 was never defined

(0)				};
(0)		  controls	{ XmBogusWidget  bogusWidget;
			          	                 1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)				};
(0)		};
(0)	!
(0)	!  circular dependency in Form children
(0)	!
(0)	object Form1: XmForm
(0)		{ controls { XmPushButton button1;
(0)			     XmLabelGadget label1;
(0)		           };
(0)		};
(0)	object button1: XmPushButton
(0)		{ arguments { XmNrightAttachment = XmATTACH_WIDGET;
(0)			      XmNrightWidget = label1;
(0)			    };
(0)		};
(0)	object label1: XmLabelGadget
(0)		{ arguments { XmNleftAttachment = XmATTACH_WIDGET;
(0)			      XmNleftWidget = button1;
(0)			    };
(0)		};
(0)	! PIR 2831, defining class names
(0)	value	cb_class_name : class_rec_name ('XmCascadeButtonGadget');
(0)	object
(0)		row_column_1 : XmRowColumn {
(0)			arguments {  XmNentryClass = cb_class_name;
(0)				  };
(0)			};
(0)		row_column_2 : XmRowColumn {
(0)			arguments {  
(0)				  XmNentryClass = class_rec_name ('XmTextWidget');
(0)				  };
(0)			};
(0)	! PIR 2847, a hitherto-undocumented legal syntax
(0)	object	foofoo : XmForm {
(0)			controls  {
(0)				    mybutton: XmPushButton {
(0)					arguments {
(0)						XmNlabelString =
(0)						    compound_string ('hello');
(0)					};
(0)		  		    };
(0)			};
(0)		};
(0)	!test for PIR 4329
(0)	value
(0)	chan_foo:	argument('chan_foo', FLOAT);
		         	                     1
Error:  (1) unexpected NAME token seen - parsing resumes after ";"

(0)	procedure
(0)	chantestcreate;
(0)	object
(0)	chantest : 
(0)	user_defined procedure chantestcreate {
(0)		arguments {
(0)			chan_foo = 100.0;
				1
Error:  (1) value chan_foo was never defined

(0)			XmNx = 5;
(0)			XmNy = 10;
(0)		};
(0)	   };
(0)	end module;
Severe:  (0) compilation terminated - fix previous errors


File (0)   validator.uil

