Beispiel #1
0
        public override void CheckSemantics(TigerScope scope, Report report)
        {
            ContainingScope = scope;

            //Check children
            IdNode.CheckSemantics(scope, report);

            if (!IdNode.IsOK)
            {
                return;
            }

            //Check type name existence
            if (!scope.TypeNameAvailable(IdNode.Name))
            {
                report.AddError(SemanticErrors.TypeNameAlreadyInUse(IdNode, IdNode.Name));
            }
            else
            {
                RecordTigerType = new RecordType(IdNode.Name, ContainingScope.Name, null);
                scope.DefineIncompleteType(IdNode.Name, RecordTigerType);
            }

            IsOK = true;
        }