Subject: Re: report on semantics checking

From: Zheng Gengbin <[email-masked]>
Date: Sat, 21 Sep 1996 10:05:23 +0800 (EAT)

On Thu, 19 Sep 1996, Guansong Zhang wrote:

> Could you please prepare a short paragraph discribe the organization of the
> semantics checking?
> 

	Here I attach a text format file of the report . If there are anything
not right , please correct them .

Zheng

		Semantic Test Suite

1. The Sample files

	The Testsuite includes 35 files :

	exec_test1.f   -  exec_test19.f ,
	spec_test1.f   -  spec_testA.f  ,
	io_test1.f     -  io_test4.f    ,
	hpf_err.f ,       hpf_pure.f

	Among these files , exec_test ,spec_test and io_test are standard
Fortran 90 . They are designed to exercise every constarint defined in the 
Fortarn 90 specification .
	In order to have a clear classification of so many semantic constraints,we devide them into three parts :
	1.  Specification part.
		this part include :
		1) intrinsic and derived type.
		2) the declaration and specification of the data objects.
		3) subroutines.
	2.  Executable part.
		this part include :
		1) the use of the data objects.
		2) expression and assignment
		3) execution control.
	3.  IO part.
		this part include:
		1) I/O statement
		2) edit of the i/o format.

	The last 2 files : hpf_err.f,  hpf_pure.f are HPF programs. They are 
desined to exercise every constraint defined in the HPF specification ,version 
1.0.

	Each test file is coded to be synthetically right but have certain 
semantic errors which must be reported by compiler .

2. orgnization of each test file .

	Each test program begin with comments telling the purpose of the test 
and the range of rule number it targets , such as 

	! test  pointer assignment
	! constraints of R736-R737      

	This means the test codes is desined to test pointer assignment ,which
is defined in the rule R736 to R737 .
	
	The test codes are annotated with comments indicating the use of the
constraint in a certain syntax rule. For example:

	INTEGER ,pointer ::  var1
	REAL    ,target  ::  var2

	!R737.3
	! Pointer assignment must have same type ,kind parameter and rank .
	var1 => var2

	The comment R737.3 tells us according to the third constraint of rule 
737 , the following pointer assignment must report a error .