zoals velen heb ik een vraagje
In de tips vond ik volgende vraag:
2. Compatibiliteitsregels geven soms aanleiding tot “versoepeling” van de type-checking. Som
zo voledig mogelijk de in Oberon(-2) aanwezige compatibiliteitsregels op, en geef telkens aan
waarom de “versoepeling” nuttig of belangrijk is.
Nu die compatibiliteitsregels dat lukt wel, maar die versoepeling
Geldt dat enkel bij de numerieke types? (dus dat de typeinclusie geldt?) of zijn er nog versoepelingen?
tot nu toe heb ik volgende (ruwe schets)
Code: Select all
Type Equivalentie
• Als als a en b in dezelfde lijst verschijnen van variabele/record veld of formele parameter declaratie en zijn geen open array’s
• Als 2 identifiers gedeclareerd worden als zijnde van hetzelfde type
• Als a1 := a2
Type Gelijkheid
• Als a en b van hetzelfde type zijn
• Als ta en tb open arrays zijn met gelijke typeelementen
• Als ta en tb procedures zijn wiens formele parameter lijsten overeenkomen
Type Inclusie
LongReal > REAL > LongINT > INT > ShortINT =>vorm van versoepeling
Toekennings compatibiliteit
Een uitdrukking a van type ta is compatible met b van type tb als
• Als ta en tb van hetzelfde type zijn
• Ta en tb numerieke types zijn en tb includes ta => versoepeling
• Ta en tb zijn records en ta is een extentie van tb
• Ta en tb zijn pointers en ta is een extentie van tb
• Ta en tb zijn procedures en ta is NIL
• Tb is een array n of char en ta is een stringconstante met m elementen en m<n
• Tb is een procedure type en ta is een procedure wiens formele parameters overeenkomen met die van tb
Array compatibiliteit
• Ta en tb zijn arrays van hetzelfde types => versoepeling als het ene groter is van omvang dan andere (numerieke types)
• Tb en ta zijn open arrays wiens elementen ook compatibel zijn => versoepeling
• Tb is een array of char en ta is een string
Uitdrukkingscompatibiliteit
Bij bewerkingen geldt type inclusie: kleinste gemeenschappelijke nujmerieke type => versoepeling
Algemeen: versoepeling laat vooral toe niet identieke numerieke types te vermengen zolang de type inclusie geldt